2016-09-30 68 views
0

目前,我有以下目錄結構:Python的導入錯誤不工作

Folder/ 
    package/ 
     __init__.py, .. many python files 
    subfolder/ 
     file1.py 

現在,我的問題是,我在Folder目錄。我可以運行python,然後運行import package。這工作正常。但是,在我的file1.py中,我在開始時輸入package,但是當我運行python subfolder/file1.py時,找不到名爲package的模塊。

編輯:我目前有__ init__.py(2個下劃線)

+0

如何在file1.py中導入你的包? – MMF

+1

將'_init_.py'重命名爲'__init __。py'應該可以幫您解決 –

+0

我懷疑下劃線是一個錯字:即使問題得到解決,問題仍會存在。 – kfb

回答

0

重命名_init_.py__init__.py(兩個下劃線)

2

在後一種情況下,Python不能找到package,因爲它是不可見的sys.pathsys.path將包含當前正在執行的腳本的父目錄。

所以,當你從Folder運行Python,此內容/path/to/Folderimport package正確地從這個發現package目錄。在第二種情況下,此條目將爲/path/to/Folder/subfolder,import package將失敗,因爲它會嘗試查找/path/to/Folder/subfolder/package

+0

那麼解決這個問題的好方法是什麼? – user3362840

+0

很難回答這個問題而不知道你想達到什麼目的。你可以在腳本中操作'sys.path'來將正確的軟件包帶入作用域(例如,在導入'package'之前,在'file1.py'中將'/ path/to/Folder'加入'sys.path'中),但通常重新考慮你的架構是一種更好的方法。 – kfb