2015-12-07 62 views
2

我有以下的目錄結構模塊未發現但具有init.py

Head -- 
     |--Data 
     |--main 
      |-- header.py 
      |-- __init__.py 
     |--dir1 
      |-- file.py 
     |--dir2 
     |--dir3 
     |-- __init__.py 

file.py我導入class Header使用from Head.main.header import *header.py中所定義。

我有所有__init__.py的地方,但仍然當我運行file.py我得到ImportError: No module named Head.main.header

我正在使用PyCharm。

我該如何解決?

運行tree我:

F:\PyCharmProjects\TestDir>tree 
Folder PATH listing for volume MISC 
Volume serial number is 0FCE-123A 
F:. 
├───.idea 
├───Data 
│ └───small 
├───Head 
    ├───dir1 
    └───main 
+0

你可以使用'樹'或等價物來顯示我們的整個結構項目並向我們展示'setup.py'的內容? – sholsapp

+0

項目中沒有setup.py。 –

回答

0

這是因爲導入試圖將頭放在同一個文件夾tham file.py中,首先必須在系統的路徑中包含頭的文件夾,以便導入可以找到它。要做到這一點做到這一點:

import sys,os 
sys.path.append(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) 

放,直到到達包含頭

文件夾所需的所有目錄名稱,那麼請你導入正常

它可能看起來有點醜,但好處是,如果你後來將你的文件夾移動到其他地方,你不必改變每一個sys.path.append你是這樣做的sys.path.append("/folder1/folder2")