我使用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
我不知道如何解决这个问题。我试图改变导入文件的方式,没有运气。问题是什么?我该如何解决?
答案 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
我希望它有所帮助;)