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

Dop*_*ger 12 python environment-variables python-import

我见过很多类似的错误,但我看不到适用于我的特定问题的解决方案.

我正在尝试使用我的PYTHONPATH上的Akismet模块,然后如果我启动交互式解释器,当我运行时 from akismet import Akismet(如docstring所说),我收到以下错误:

from akismet import Akismet
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name Akismet
Run Code Online (Sandbox Code Playgroud)

dav*_*zen 15

我只是想更多地关注Doppelganger自己对他的问题的回答.我有这个错误,情况是这样的:

您正尝试从名为'strategy.py'的模块导入函数/类X.

不幸的是,你还创建了一个名为strategy的python包目录,换句话说,你有一个名为'strategy'的目录,目录'strategy'中至少有一个名为'____init___.py'的文件.

root folder\
    strategy.py (contains function/class called X)
    strategy\
        __init__.py
Run Code Online (Sandbox Code Playgroud)

然后你忘记了你已经创建了python包目录的事实,并尝试导入strategy.py'root'目录中的文件中定义的一些类或函数,就像这样

from strategy import X

你得到的是Python error: ImportError: cannot import name X错误.

正如Doppelganger所说,实际问题是python解释器优先于你创建的包目录,并在包目录中搜索名为X的FILE/MODULE,并忽略实际模块strategy.py和函数/类X.其中你真的在寻找.

如果你阅读python包的文档,这正是你所期望和想要的,但如果你像我一样改变主意,你可能最终会摸不着头脑.


And*_*Dog 6

如果您的PYTHONPATH设置正确且全局(仅我自己测试),它将完美地工作.

  • 必须设置为包含"akismet.py"的目录,而不是文件路径!确保不使用相对路径.
  • 请注意,您可能需要重新引导/注销才能将环境变量更改应用于所有程序.

  • 除了建议人们重新启动以应用环境变量更改外,答案很好.确定,重新启动应用程序,但不需要重新启动操作系统内核和固件. (10认同)