2015-06-22 58 views
0

我在該項目中的幾個Python模塊,我把它們放在不同的文件夾,例如,如何導入模塊中的上一級目錄在python

pythonProject\folderA\modulex.py 
pythonProject\folderB\moduley.py 
pythonProject\commonModule\module1.py 

我有每個文件夾中__init__.py。 在這種情況下,如何將module1導入modulex?

+0

使用os.chdir(路徑) – mmachine

+0

如何?你能給個例子嗎?謝謝 – 1a1a11a

回答

1

只要你有Python包(那些包含__init__.py文件的文件夾),您可以導入模塊,如下面

modulex.py 
---------- 

from pythonproject.commonModule import module1 

試試這個,如果pythonproject不是由工具定義的,那麼你可以使用相對尋址像下面

from ..commonModule import module1 
+0

感謝您的回覆,當我使用第一種方法時,它有以下錯誤:'from project.commonModule.Utils import Utils' 'ImportError:No module named'project'' – 1a1a11a

+0

當我嘗試使用第二個,它有以下錯誤:'SystemError:父模塊''沒有加載,不能執行相對導入' – 1a1a11a

+0

對於第一個,是否有根文件夾特殊,以便可以識別根文件夾(項目)? – 1a1a11a

1

使用相對導入

# in modulex 
from ..commonModule import module1 
+0

看到上面的帖子中的評論,它仍然不工作,你能幫助我嗎? – 1a1a11a

+0

您無法從模塊運行modulex隔離器。 '從pythonProject.folderA導入modulex'並使用'modulex.xxx'來調用你想要的。 – LittleQ

+0

問題是pythonproject找不到,錯誤是'ImportError:沒有名爲'pythonproject''的模塊' – 1a1a11a

0

如果所有模塊都在同一個目錄中,那麼最好。如果它們中的任何一個在不同的可能的情況下使用os.chdir(路徑)。使用os.chdir(路徑)方法(https://docs.python.org/3.2/library/os.html)可能更改程序中的工作目錄。

import os 
import modulex 

#assume working directory is "pythonProject\folderA\" 

os.chdir(r'pythonProject\commonModule\') 
#now working directory is "pythonProject\commonModule\" 

import module1 
+0

雖然這可能會回答這個問題,但對代碼示例加入解釋總是很好的做法。 – BDL

相關問題