假設我有以下的(PROJECT1是蟒蛇路徑上):如何將Python模塊導入與導入模塊名稱相同的包中?
/project1/utils/utils.py
def cool_function():
print "cool"
/project1/backup/utils.py
from utils.utils import cool_function
這將引發 「導入錯誤:沒有模塊名爲utils」。
我認爲這是因爲它正在backup.utils中搜索utils.cool_function。有沒有重命名utils軟件包?我認爲我的命名習慣是有道理的,而且很自然,所以我不願意改變它。如果這是首選和標準做法,我會重新命名它!
謝謝!
編輯:我正在使用Python 2.7
我也覺得這是做一個好辦法。使用project1來區分; project1.utils.utils和project1.backup.utils。如果project1在sys.path中,如你所說,如果你想從其他文件夾運行該項目,如:python folder1/folder2/project1/run.py – Bogdan 2012-01-16 14:22:22
其實,/ project1 /位於路徑中,所以導入時我可以直接引用備份或utils。應該把它們放在一個包裝包中? – cammil 2012-01-17 13:46:09
在許多情況下,這是一個判斷的呼聲,但作爲一般規則,我會說是的 - 如果您需要將此項目與其他人整合,那麼它們會有問題,如果他們還有'utils'或'backup'頂級包。這通常不會發生 - 但這是出於這個原因。 – AdamKG 2012-01-17 13:52:44