Python错误:ImportError:无法导入名称Akismet

12 投票
6 回答
59870 浏览
提问于 2025-04-15 19:49

我看到过很多类似的错误,但我找不到适合我这个具体问题的解决办法。

我正在尝试使用一个叫做 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”这个文件的文件夹,而不是文件的具体路径!确保不要使用相对路径。
  • 注意,你可能需要重启电脑或者注销账户,才能让环境变量的更改对所有程序生效。

撰写回答