2017-01-24 40 views
0

我有下面的模塊結構:的__init__.py無法正常運行在Python 3

/home/Dir1/Dir2/Mod.py 

內/家我有我執行並具有下面的代碼腳本Test.py

import Dir1.Dir2 
dummy() 

再次指南:Dir1具有__init__.py文件,其具有下面的代碼:

print('dir1 init') 
x = 1 

目錄Dir2具有以下__init__.py文件具有以下代碼:

from Mod import dummy 
print('dir2 init') 
y = 2 

有一個最終的文件Mod.py其被定義如下:

print ("in Mod.py") 
z = 3 
def dummy(): 
    print ("Hello World") 

由於Test.py是在我的應用程序的入口點這是下面的錯誤,我得到:

dir1 init 
Traceback (most recent call last): 
    File "Test.py", line 1, in <module> 
    import Dir1.Dir2 
    File "C:\Users\bhatsubh\Desktop\Everything\Codes\Python\Dir1\Dir2\__init__.py" 
, line 1, in <module> 
    from Mod import dummy 
ImportError: No module named 'Mod' 

爲什麼__init__.py文件裏面Dir2無法找到文件Mod.py

基本上我在這裏要做的是使Mod.py公共內部的函數dummy在用戶不知道有這個名稱的模塊的情況下公開。

我在這裏做些傻事嗎?

回答

0

更改Test.py使用dummy與全名:

from .Mod import dummy 
print('dir2 init') 
y = 2 

,使其:

import Dir1.Dir2 

Dir1.Dir2.dummy() 

和你Dir1/Dir2/.__init__.pyMod前使用相對導入了領先的.工作:

python Test.py 
dir1 init 
in Mod.py 
dir2 init 
Hello World 

備註:按照慣例,所有包裝(即:目錄)和模塊(即py文件)名稱應該是小寫。