Python error: ImportError: cannot import name Akismet
我已经看到许多类似的错误,但是看不到适用于我的特定问题的解决方案。
我正在尝试使用PYTHONPATH上的Akismet模块,然后如果我启动交互式解释器,则在运行
1 2 3 4 | from akismet import Akismet Traceback (most recent call last): File"<stdin>", line 1, in <module> ImportError: cannot import name Akismet |
我只是想引起更多注意Doppelganger对他的问题的回答。我遇到此错误,情况是这样的:
您正在尝试从名为" \\'strategy.py "的模块中导入函数/类X。
不幸的是,您还创建了一个名为strategy的python软件包目录,换句话说,您有一个名为\\'strategy \\'的目录,并且在目录\\'strategy \\'中至少有一个名为\\'的文件。 ____ init ___。py \\'。
1 2 3 4 | root folder\\ strategy.py (contains function/class called X) strategy\\ __init__.py |
然后您会忘记创建了python软件包目录的事实,并尝试将\\'root \\'目录中的文件
然后得到的是
Doppelganger指出,实际的问题是python解释器优先于您创建的包目录,并在该包目录中搜索名为X的FILE / MODULE,而忽略了实际的模块
如果您阅读python软件包上的文档,这正是您所期望和想要的,但是如果您像我一样半途而废,您可能最终会挠头。
如果正确且全局设置了PYTHONPATH(我自己对其进行了测试),它将可以完美地工作。
- 必须设置为包含" akismet.py "的目录,而不是文件路径!确保您不使用相对路径。
- 请注意,您可能需要重新启动/注销才能将环境变量更改应用于所有程序。
检查您的PYTHONPATH是否确实如您期望的那样,例如通过在交互式控制台中执行此操作:
1 2 3 | In [1]: import sys In [2]: print sys.path |
akismet.py确实在这些文件夹之一中吗?
您的路径中应该具有包含\\'akismet \\'目录的目录。我想,您已经将\\'akismet \\'目录本身添加到$ PYTHONPATH中。
写时:
1 | from akismet import Akismet |
Python尝试在其搜索路径中的某个位置打开文件
所有这些假设
简单:
现在运行您的应用程序,您应该会很好。
我总是忘记当您在ipython解释器中使用
结论:避免使用