【问题标题】:ImportError: No module named abcImportError:没有名为 abc 的模块
【发布时间】:2012-08-02 18:46:34
【问题描述】:

我在 python26 文件夹中创建了一个名为 abc 的类。我试图通过另一个文件引用它

def FileRW():
   import re
   import os
   import abc

我收到错误 Traceback(最近一次通话最后一次): 文件“”,第 1 行,在 文件RW() FileRW 中的文件“C:\Python26\pyFileIOprog”,第 4 行 导入更改列表 ImportError: 没有名为 abc 的模块

谁能告诉我哪里出错了。我已将环境变量“路径”设置为 C:\python26

【问题讨论】:

  • 这对超级用户可能更好。但是,python 使用变量 PYTHONPATH。检查您是否设置了该变量。
  • (a)不要把自己的代码放到Python文件夹里,放到自己的项目文件夹里(其实就是做成virtualenv); (b) abc 是标准模块名称。尽量避免重复使用这些名称,这会引起混淆。
  • 我尝试使用值 C:\Python26;C:\Python26\DLLs;C:\Python26\LIB;C:\Python26\LIB\LIB-TK 填充 PYTHONPATH 变量我得到了错误回溯(最后一次调用):文件“”,第 1 行,在 FileRW() 文件“C:\Python26\pyFileIOprog”,第 4 行,在 FileRW import abc ImportError: No module named abc

标签: python import


【解决方案1】:

abc 是随 Python 一起分发的标准库模块的名称,因此我强烈建议您将名称更改为唯一的名称。

假设您已经这样做了,您可以将模块的文件放在与导入它的脚本相同的目录中,然后就会找到它。如果您想将其放在其他位置,您可以将其位置的路径附加到sys.path 变量中。这是一个例子:

import sys
sys.path.append('path/to/my/module')
# on Windows append something like 'C:\\path\\to\\my\\module' or r'C:\path\to\my\module'  

import my_abc  # should work now

...

请注意,除非您更改模块的名称,否则上述方法将不起作用,因为 Python 会先找到标准模块,然后再查找您附加的目录路径。您可以通过在 sys.path 列表的开头插入模块路径来覆盖它,但我不建议这样做。

如果您希望您的模块路径自动附加到系统的模块搜索路径中,您可以创建一个 name.pth 文件并将其放在四个特殊目录之一中。有关详细信息,请参阅site.py 文件的在线文档。

【讨论】:

    【解决方案2】:

    如果您的文件名为abc.py,那么它将尝试导入自身,因此由于循环依赖而引发ImportError。请注意不要将您的程序文件命名为与标准库中的模块相同的名称。

    【讨论】:

      【解决方案3】:

      我也遇到过这个问题。我的项目在 python2 中使用了 pymongo 模块,而这个 pymongo 内部使用了 abc 库。我尝试了很多解决方案并进行了很多搜索,但没有一个解决方案成功。所以我计划从我的 Ubuntu 16.04 机器上重新安装或完全删除 python。但是 sudo apt-get install --reinstall python2.7 命令也失败了,并且抛出了相同的 abc module not found 错误。所以我终于做了一些黑客攻击和破解。以下是步骤 -

      手动删除所有 python 版本
      • sudo rm -rf /usr/bin/python2.x 以及 python3.x
      • sudo rm -rf /usr/lib/python2.x 以及 python3.x
      • sudo rm -rf /usr/local/lib/python2.x 以及 python 3.x
      更新 Ubuntu
      • sudo apt-get 更新

      如果出现此错误需要重新安装ubuntu包然后运行以下命令

      sudo vi /var/lib/dpkg/status 
      

      并从上面的文件中删除 package_name 上的包的所有行

      现在从https://www.python.org/downloads/ 下载一个python tgz 文件并将其解压并放入CD

      ./configure
      make test
      sudo make install
      

      现在应该安装 Python。通过运行python检查

      【讨论】:

        【解决方案4】:

        abc 是模块(abc.py)还是包(abd 目录)?

        无论如何,检查它们是否存在于与 pyFileIOprog 相同的目录中

        【讨论】:

        • abc 是标准库模块。
        • 哦...抱歉...我只是以为您使用的是假模块名称。
        • abc 是模块。我认为它是一个在单独文件中定义的类。
        猜你喜欢
        • 2019-05-20
        • 2013-03-11
        • 2012-12-07
        • 2012-05-23
        • 2019-07-29
        • 2015-07-04
        • 2014-03-15
        • 2017-12-29
        • 2014-09-12
        相关资源
        最近更新 更多