2009-11-30 53 views
10

在我的python項目中共享實用程序模塊的最佳目錄結構策略是什麼?由於通用模塊將被更新爲新函數,我不想將它們放在python安裝目錄中。在Python項目中共享實用程序模塊

project1/ 
project2/ 
sharedUtils/ 

從project1我不能使用「import .. \ sharedUtils」,有沒有其他方法?我寧願不硬編碼「sharedUtils」位置提前

回答

6

由於製作一個單獨的獨立包?並把它放在你的python安裝的/ site-packages?

當談到開發模式時,我個人也很喜歡:使用符號鏈接和/或*.pth文件。

+3

有趣的使用問號... – tgray 2009-11-30 13:41:45

+1

由於有很多可能性......我使用「蘇格拉底方法」:試圖讓人們反思可能性。 – jldupont 2009-11-30 14:20:14

+2

這種方式如何處理版本控制?當你提交你的項目時,你是否也會手動進入site-packages目錄並執行相同的操作? – 2009-11-30 17:21:16

5

假設您有sharedUtils/utils_foosharedUtils/utils_bar。 您可以編輯您的PYTHONPATH包括sharedUtils,然後使用

import utils_foo 
import utils_bar 
etc. 

在linux下將它們導入project1project2你能做到這一點可以編輯〜/ .profile中有這樣的事情:

PYTHONPATH=/path/to/sharedUtils:/other/paths 
export PYTHONPATH 

使用PYTHONPATH環境變量會影響python在查找模塊時搜索的目錄。由於每個用戶都可以設置自己的PYTHONPATH,因此該解決方案適用於個人項目。

如果希望機器上的所有用戶都能夠導入sharedUtils,然後 中的模塊,則可以使用.pth文件來實現此目的。你把.pth文件的確切位置可能取決於你的python發行版。見 http://bob.pythonmac.org/archives/2005/02/06/using-pth-files-for-python-development/

+0

對不起,但python新增了,你會在PYTHONPATH中完整路徑代碼還是使用「../」? – 2009-11-30 17:23:00

+0

@iKarampa,沒問題。 PYTHONPATH需要一個完整的(絕對)路徑。 – unutbu 2009-11-30 17:38:03

+0

分發文件時,需要以某種方式連接一個目錄中的所有實用程序,並且標準導入將正常工作。好的,我知道了! 謝謝 – 2009-12-01 09:38:15

4

目錄結構:

project1/foo.py 
sharedUtils/bar.py 

隨着目錄,你已經證明他們,從foo.pyproject1目錄內您可以按以下的相對路徑添加到sharedUtils

import sys 
sys.path.append("../sharedUtils") 
import bar 

這可以避免硬編碼C:/../sharedUtils路徑,並且只要您不更改目錄結構,它就會工作。