2016-04-02 116 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