2
我將重新整理我的python代碼的大塊作爲一個包。我想這個軟件包會被保存在主代碼所在的同一目錄中。所以整個結構如下所示:導入本地軟件包的麻煩
project directory
\-mymod
\-__init__.py # totaly empty
\-xsum.py # with xsum function
\-main.py # main program
,因爲它只是一個例子
#xsum.py
def xsum(a,b):
"just xsum"
return a+b
而main.py裏面:
#main.py
import mymod
print mymod.xsum.xsum(2,3)
的Python會返回一個錯誤:
Traceback (most recent call last):
File "main.py", line 3, in <module>
print mymod.xsum.xsum(2,3)
AttributeError: 'module' object has no attribute 'xsum'
我試着添加p roject目錄和/或項目目錄/ mymod到sys.path,但它沒有幫助。
'import mymod.xsum'而不是'import mymod' in main.py.或者____init____.py中的'from mymod import xsum',然後您可以在main.py中導入mymod。 – michaelmeyer
@doukremt你是對的,它的工作原理。但這很奇怪。文檔中沒有任何東西。爲什麼我應該直接在'__init __。py'中導入模塊? – rth
我想這是爲了防止名稱衝突。例如,你可以在'__init __。py'中有一個'xsum'函數,然後,如何判斷名稱mymodule.xsum是否指向這個函數,或者是指向文件'xsum.py'?需要記住的是,當你鍵入'import mymodule'時,Python真正導入的是'mymodule/__ init __。py'中定義的名稱集合。因此,爲了保持事物的明確性,將所有模塊文件導入模塊本身的'__init __。py'文件是很方便的。這樣,'import mymod'或'import mymod.xsum'仍然有效。 – michaelmeyer