3

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

def FileRW():
   import re
   import os
   import abc

我收到错误 Traceback(最近一次调用最后一次):文件“”,第 1 行,在 FileRW() 文件“C:\Python26\pyFileIOprog”,第 4 行,在 FileRW import ChangeList ImportError: No module named abc

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

4

4 回答 4

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

于 2012-08-02T23:37:08.947 回答
0

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

于 2012-08-03T00:11:04.123 回答
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 更新

如果出现此错误,则需要重新安装软件包 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 检查

于 2018-05-16T09:42:13.243 回答
-1

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

在任何情况下,检查它们是否存在于与 pyFileIOprog 相同的目录中

于 2012-08-02T18:51:49.320 回答