2016-07-15 50 views
-1

我正在做一个Macbook上的项目,它的系统是OS X 10.11.5。我使用的Python 3.5和a.py过这样即使我在其中有一个__init__.py也没有包错误

rec-par/ 
    rec/ 
     __init__.py 
     cle/ 
      __init__.py 
      c.py 
     par/ 
      __init__.py 
      b.py 
     util/ 
      __init__.py 
      a.py 

目录有一个import

from rec.par.b import * 

而且它有一个错误,如'No module name rec.par , rec is not a package'。我已将路径'rec-par'添加到sys.path,并在cle/c.py中使用相同的导入命令没有错误。

我尝试了How to fix "Attempted relative import in non-package" even with __init__.py, 使用python3 -m a.py中给出的方法。但它没有奏效。

有什么我在这里失踪?

+0

您的顶级文件夹(或导入路径中的任何其他位置)是否包含“rec.py”文件?异常消息似乎暗示它确实将某些事情看作是“rec”,但不是正确的事情。 – Blckknght

回答

0

代码中的模块称为“rec-par”,但在尝试导入时,请参阅“rec.par”。

+1

'rec-par /'是整个项目的根路径。我已经添加了PYTHONPATH(我可以从其他目录的导入中使用,例如'cle /')。'rec /'是子目录,也是'rec-par /','par/'是'rec /'的包裹。 'rec.par'只是像PYTHONPATH rec-par一样。你是两码事 – karajan1001

0

好的,我已经解决了这个问题。在目录util/__pycache__ 有一个文件par.cpython-35.py它与目录包具有相同的名称。这造成了混乱。它被删除后,问题就解决了。

相关问题