2013-04-27 173 views
2

假設我工作的一個Python項目名爲MyModule的,而且我有以下目錄結構:通過PIP安裝後不同的Python模塊路徑

mymodule/ 
    README 
    setup.py 
    mymodule/ 
     __init__.py 
     foo.py 
     bar.py 

在發展過程中,我通常工作了內mymodule文件夾與它中的所有源文件。正因爲如此,如果我工作foo,想從bar進口的東西,我會做這樣的事情:

from bar import myfunction 

一切發展過程中正常工作。當我想部署我的模塊時出現問題。如果我安裝模塊到另一個項目我的工作,我的代碼將不再有效,因爲模塊需要替代進口是這樣的:

from mymodule.bar import myfunction 

我可以改變我的所有進口的mymodule使用這種格式但是這意味着該模塊將不再在開發中工作。當我修復部署代碼時,我將其分解以進行開發,反之亦然。

我在做什麼錯?

+0

你的路徑到處都一樣嗎?聽起來像你可能有'。'作爲你在一個地方但不是另一個地方的路徑的一部分。 – mlissner 2013-04-27 23:11:25

+0

是的,路徑是一樣的。當然,我可以在我的模塊代碼中做一些python路徑欺騙,這樣它就可以工作,但我覺得這是一種黑客攻擊。我相信有更好的辦法,我只是不知道公約是什麼。 – 2013-04-27 23:16:36

回答

0

我不知道這是否是最乾淨的方式,但我最後只是用mymodule.作爲我的所有進口的前綴。如果我需要在本地開發,我只需在根目錄中運行pip install .。如果我做了任何更改,我需要卸載並重新安裝,但至少可以工作。我確信有一些PATH技巧會阻止我必須這樣做。

希望這會有幫助