Python错误:importTerror:无法导入类似名称

2024-06-01 04:42:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我也看到过许多类似的错误,但我看不出一个适用于我的特定问题的解决方案。

我试图使用PYTHONPATH上的Akismet module,然后如果启动交互式解释器,当我运行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

Tags: fromimportmost错误akismet解决方案call解释器
3条回答

检查您的PYTHONPATH是否真的如您所期望的那样,例如在交互式控制台中执行此操作:

In [1]: import sys

In [2]: print sys.path

akismet.py真的在这些文件夹中吗?

我只想引起更多的注意,多佩尔冈格自己对他的问题的回答。我犯了个错误,情况是:

您正试图从一个称为“strategy.py”的模块中导入函数/类X。

不幸的是,您还创建了一个名为strategy的python包目录,换言之,您有一个名为strategy的目录,其中至少有一个文件位于strategy目录下,名为'uuuuuuuuinit'.py'。

root folder\
    strategy.py (contains function/class called X)
    strategy\
        __init__.py

然后,您忘记了创建python包目录的事实,并尝试导入在根目录中的文件strategy.py中定义的一些类或函数,如下所示

from strategy import X

然后得到的是Python error: ImportError: cannot import name X错误。

正如Doppelganger所指出的,实际的问题是python解释程序优先于您创建的包目录,并在包目录中搜索名为X的文件/模块,而忽略实际要查找的模块strategy.py,以及其中的函数/类X。

如果您阅读了关于python包的文档,这正是您所期望和想要的,但是如果您像我一样中途改变了主意,您可能最终会挠头。

如果您的PYTHONPATH设置正确且全局性良好(只需自己测试它),那么它将完美工作。

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

相关问题 更多 >