ImportError:没有名为abc的模块

时间:2012-08-02 18:46:34

标签: python import

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

def FileRW():
   import re
   import os
   import abc

我收到错误Traceback(最近一次调用最后一次):   文件"",第1行,in     FileRW()   文件" C:\ Python26 \ pyFileIOprog",第4行,在FileRW中     导入ChangeList ImportError:没有名为abc的模块

有人可以告诉我我哪里出错了。我已经设置了环境变量' path'到C:\ python26

4 个答案:

答案 0 :(得分:3)

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列表的开头插入模块的路径来覆盖它,但我不建议这样做。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我也遇到了这个问题。我的项目是在python2中使用pymongo模块,这个pymongo内部使用了abc库。我尝试了很多解决方案并进行了大量搜索,但解决方案都没有解决。所以我打算从我的Ubuntu 16.04机器上完全重新安装或删除python。但sudo apt-get install --reinstall python2.7命令也失败了,并且抛出了相同的abc模块未找到错误。所以我终于做了很少的黑客和裂缝。以下是步骤 -

手动删除所有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 update

介于两者之间如果出现此错误需要重新安装软件包ubuntu 然后运行以下命令

sudo vi /var/lib/dpkg/status 

并删除package_name

上方包的上述文件中的所有行

现在从https://www.python.org/downloads/下载python tgz文件并将其解压缩到其中

./configure
make test
sudo make install

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

答案 3 :(得分:-1)

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

在任何情况下,检查它们是否与pyFileIOprog

存在于同一目录中