2013-08-27 19 views
0

我在工作區的兩個項目:PROJECTA和項目B添加兩種以上的Python項目路徑PYTHONPATH

我添加了兩個項目,以環境變量的路徑與

變量名:PYTHONPATH 變量值:C :\路徑到PA \ PROJECTA; C:\路徑到PB \項目B;

我有以下目錄結構PROJECTA &項目B

PROJECTA 
    com 
     example 
      sample 
       projAAA 
        srcfiles 
        testcasefiles 


PROJECTB 
    com 
     example 
      sample 
       projBBB 
        srcfiles 
        testcasefiles 

我特林在項目B從testcasefiles目錄中導入從srcfiles目錄中的文件

from com.example.sample.projectBBB.srcfiles import pythonfile.py 

Python是拋出一個異常:

ImportError:No module named projectBBB.srcfiles

當PROJECTA路徑從PYTHONPATH中刪除時,將不會發生此錯誤環境變量

如何解決此問題,我可以添加多個項目路徑。

回答

1

那麼,Python總是首先將「com」(在PROJECTA中)作爲模塊「com」,並且如果它無法在其中找到某些東西,甚至不會查找其他「com」的出現。 Python不會「合併」模塊 - 如果你仔細想一想,模塊可以是任意通用和複雜的,這是沒有意義的。

溶液A(正常)

納入PYTHONPATH項目以上的目錄,並與所述地址前綴的模塊,例如像這個:

from PROJECTA import com as comA 
from PROJECTB import com as comB 
from comA.example.sample.projectBBB.srcfiles import pythonfile.py 

btw。我們默認你的文件應該是__init__.py(即應該被視爲模塊的所有目錄中)。

溶液B(怪異)

包括在PYTHONPATH項目以上的目錄,如前面的情況,但創建這樣的第三目錄結構:

MODULE_MERGE 
    com 
     example 
      sample 

編輯MODULE_MERGE/com/example/sample/__init__.py文件包括:

from comA.example.sample import projAAA 
from comB.example.sample import projBBB 

現在很高興在你的PYTHONPATH

包括MODULE_MERGE問題是這樣做是否合理。我不這麼認爲。 Python項目應該是獨立的,通常沒有深度嵌套的命名空間。

相關問題