2016-04-02 149 views
3

我有這樣的結構(只顯示與受影響)的一個項目:無法導入模塊蟒蛇導入錯誤

main.py # starting script 
/app 
    |__init__.py 
    |/exceptions 
    | __init__.py # content: from .ex400 import * 
    | base.py 
    | ex400.py # content: some classes extending classes from base.py 
    |/extend 
    | __init__.py # empty 
    | module.py 

/app/extend/module.py,我試圖從/app/exceptions/ex400.py導入類。而從主本人進口module.py

module.py

# I added this to check the path, output is below 
import sys 
print 'Working directory =>', sys.path 

from app.exceptions.ex400 import SomeClass, MoreClass 

# ... some code here ofcourse 

和運行的時候,我得到一個ImportError

Working directory => ['/prj/myproject', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages'] 

... 
File "/prj/myproject/app/extend/module.py", line 5, in <module> 
    from app.exceptions.ex400 import SomeClass, MoreClass 
ImportError: No module named exceptions.ex400 

我在這裏錯過了什麼嗎?

回答

2

是的,你錯過了一些東西。它只是一些小東西,但用Python導入是一個痛苦的反正。例如,您沒有__init__.py應用程序-文件夾。這應該解決你的問題。順便說一下,不要對名稱空間感到困惑等等,我只會將__init__.py保留在您的例外-文件夾爲空。

乾杯

+0

對不起!我真的錯過了我的問題,但我有赫赫對不起!生病編輯 – rrw

+1

這是奇怪,我重新創建您的結構的它的工作原理在我的機器上...任何錯別字也許? (愚蠢的建議,但你知道)另外,_app_folder中你的'__init __。py'的內容是什麼?而main.py的內容? –

+0

這很奇怪!我已經花了像我們這個sh ** ..我不認爲錯字是原因,因爲當我使用相對導入'從..exceptions.ex400導入類'它的工作原理.. – rrw