导入同一文件夹中的Python文件时的ImportError

时间:2015-04-26 20:09:57

标签: python python-3.x

我使用Pycharm在Python 3项目中工作,我在导入文件时遇到问题。这是我的项目结构:

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

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

3 个答案:

答案 0 :(得分:1)

我犯了同样的初学者错误在控制台中执行代码而不是运行它(右键单击文件并选择&#34; Run '_your_python_file_' &#34)。

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

答案 1 :(得分: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

答案 2 :(得分:0)

基于错误的回溯,我认为您的问题可能是您的模块和包具有相同的名称,因此当您尝试导入twixer.facepp时,Python使用其Zen&#34; In模棱两可的表面拒绝猜测的诱惑&#34;。

Python避免猜测你是否意味着导入模块twixer或导入包twixer,因此它会引发错误以便你纠正它。

您也可以在不更改模块/包名称的情况下解决此问题(尽管我建议这样做),使用relative import,即

from . import facepp

我希望它有所帮助;)