2015-04-26 75 views
1

我正在使用Pycharm在Python 3项目中工作,导入文件时出现问题。这是我的项目结构:导入同一文件夹中的Python文件时导入错误

twixer 
    |----- docs 
    |----- twixer 
      |----- __init__.py 
      |----- config.ini 
      |----- facepp.py 
      |----- twixer.py 
    |----- setup.py 

在twixer.py我的下一行:

import twixer.facepp 

但是当我运行该项目,该行引发此错误:

Traceback (most recent call last): 
    File "<frozen importlib._bootstrap>", line 2218, in _find_and_load_unlocked 
AttributeError: 'module' object has no attribute '__path__' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "D:/Users/David/PycharmProjects/twixer-py/twixer/twixer.py", line 2, in <module> 
    import twixer.facepp 
    File "D:\Users\David\PycharmProjects\twixer-py\twixer\twixer.py", line 2, in <module> 
    import twixer.facepp 
ImportError: No module named 'twixer.facepp'; 'twixer' is not a package 

我不知道如何解决这个问题。我试图改变我没有运气的情况下导入文件的方式。问题是什么?我该如何解决它?

+1

wouldnt'import faceapp'做这个工作吗? – ThePavolC

+0

这是我尝试的第一件事,但Pycharm显示此错误:没有名为facepp的模块。 –

+0

@ThePavolC不确定会发生什么,但我将根文件夹重命名为'twixer-py'并返回到'twixer',现在导入facepp工作,但是Pycharm仍然在编辑器上显示相同的错误。 –

回答

0

如果在评论中回答它太长了,所以在这里发布,我不知道它是否适用于你,只是提供一些想法。 我有类似的问题,我在Python路径中添加模块解决它

hello-world 
     |----- helpers 
       |----- __init__.py 
       |----- helper.py 
       |----- sdp_helper.py 
     |----- say-hello 
       |----- __init__.py 
       |----- say_hello.py 

当我在使用控制台上的脚本:

sys.path.insert(0, "/home/haifzhan/hello-world/helpers") 
import helper 
import sdp_helper 

当我在模块中使用Pycharm,上述进口不工作,所以我用:

from hello-world.helpers import helper 
from hello-world.helpers import sdp_helper 
+0

但有问题,'faceapp.py'和'twixer.py'在同一个文件夹中。您应该能够从同一个文件夹导入.py文件 – ThePavolC

0

基础上,你的错误的追溯,我觉得你的问题可能是你的模块和包具有相同的名称,因此,当您尝试ŧ o导入twixer.facepp,Python使用其“Zen”面对模棱两可拒绝猜测的诱惑“。

Python避免猜测,如果你的意思是导入模块twixer或导入包twixer,因此它提出了一个错误,为您纠正它。

你也可以解决这个问题,而无需更改模块/包的名称(虽然我会建议),通过使用relative import,即

from . import facepp 

我希望它能帮助;)

1

我做了相同的初学者错误执行控制台中的代码而不是运行它(右键单击文件并选择“Run '_your_python_file_'”)。

希望这可以帮助其他初学者。