在我的python項目中共享實用程序模塊的最佳目錄結構策略是什麼?由於通用模塊將被更新爲新函數,我不想將它們放在python安裝目錄中。在Python項目中共享實用程序模塊
project1/
project2/
sharedUtils/
從project1我不能使用「import .. \ sharedUtils」,有沒有其他方法?我寧願不硬編碼「sharedUtils」位置提前
在我的python項目中共享實用程序模塊的最佳目錄結構策略是什麼?由於通用模塊將被更新爲新函數,我不想將它們放在python安裝目錄中。在Python項目中共享實用程序模塊
project1/
project2/
sharedUtils/
從project1我不能使用「import .. \ sharedUtils」,有沒有其他方法?我寧願不硬編碼「sharedUtils」位置提前
由於製作一個單獨的獨立包?並把它放在你的python安裝的/ site-packages?
當談到開發模式時,我個人也很喜歡:使用符號鏈接和/或*.pth
文件。
假設您有sharedUtils/utils_foo
和sharedUtils/utils_bar
。 您可以編輯您的PYTHONPATH包括sharedUtils
,然後使用
import utils_foo
import utils_bar
etc.
在linux下將它們導入project1
和project2
你能做到這一點可以編輯〜/ .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/
對不起,但python新增了,你會在PYTHONPATH中完整路徑代碼還是使用「../」? – 2009-11-30 17:23:00
@iKarampa,沒問題。 PYTHONPATH需要一個完整的(絕對)路徑。 – unutbu 2009-11-30 17:38:03
分發文件時,需要以某種方式連接一個目錄中的所有實用程序,並且標準導入將正常工作。好的,我知道了! 謝謝 – 2009-12-01 09:38:15
目錄結構:
project1/foo.py
sharedUtils/bar.py
隨着目錄,你已經證明他們,從foo.py
的project1
目錄內您可以按以下的相對路徑添加到sharedUtils
:
import sys
sys.path.append("../sharedUtils")
import bar
這可以避免硬編碼C:/../sharedUtils
路徑,並且只要您不更改目錄結構,它就會工作。
有趣的使用問號... – tgray 2009-11-30 13:41:45
由於有很多可能性......我使用「蘇格拉底方法」:試圖讓人們反思可能性。 – jldupont 2009-11-30 14:20:14
這種方式如何處理版本控制?當你提交你的項目時,你是否也會手動進入site-packages目錄並執行相同的操作? – 2009-11-30 17:21:16