我在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
答案 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版本介于两者之间如果出现此错误需要重新安装软件包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
存在于同一目录中