Python错误:ImportError:无法导入名称Akismet
我看到过很多类似的错误,但我找不到适合我这个具体问题的解决办法。
我正在尝试使用一个叫做 Akismet模块,这个模块已经在我的PYTHONPATH里了。然后,当我启动交互式解释器,运行 from akismet import Akismet
(就像文档里说的那样)时,我遇到了以下错误:
from akismet import Akismet
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name Akismet
6 个回答
4
检查一下你的PYTHONPATH是不是你想要的那样,比如可以在交互式控制台里这样做:
In [1]: import sys
In [2]: print sys.path
akismet.py真的在这些文件夹中的某一个吗?
15
我想特别提一下Doppelganger自己对他问题的回答。我之前也遇到过这个错误,情况是这样的:
你想从一个叫做'strategy.py'的模块中导入某个函数或类X。
不幸的是,你还创建了一个叫做strategy的Python包目录,也就是说,你有一个名为'strategy'的文件夹,里面至少有一个文件叫做'____init___.py'。
root folder\
strategy.py (contains function/class called X)
strategy\
__init__.py
然后你忘记了你已经创建了这个Python包目录,试图从根目录中导入在文件strategy.py
中定义的某个类或函数,比如这样:
from strategy import X
结果你会看到Python错误:ImportError: cannot import name X
。
实际上,Doppelganger提到的问题是,Python解释器优先考虑你创建的包目录,它会在这个包目录中寻找名为X的文件或模块,而忽略了你真正想要的模块strategy.py
和里面的函数/类X。
如果你看过关于Python包的文档,你会发现这正是你所期望和想要的行为,但如果像我一样在中途改变主意,你可能会感到困惑。
6
如果你的PYTHONPATH设置得正确并且是全局的,它就会完美运行(我自己刚测试过)。
- PYTHONPATH必须设置为包含“akismet.py”这个文件的文件夹,而不是文件的具体路径!确保不要使用相对路径。
- 注意,你可能需要重启电脑或者注销账户,才能让环境变量的更改对所有程序生效。