0

我创建了一个包,为了便于使用我称之为 packageA。

在这个包中,我有 4 个子模块(单独的文件)和一个 init 文件,所以包包含以下文件:

  • __init__.py
  • 模块A.py
  • 模块B.py
  • 模块C.py
  • 模块D.py

BD 模块是独立的,它们不导入任何其他本地模块。模块 A 导入模块 BD。

现在我有一个要导入的脚本,packageAinit.py 到目前为止是空的。

import packageA

工作没有问题。但是 moduleA 在此导入中不可用。如果我想通过 packageA.moduleA 使用它,则会引发此错误:

AttributeError: 'module' object has no attribute

以下也可以正常工作:

from packageA import moduleB
from packageA import moduleC
from packageA import moduleD

下一次导入会导致 ImportError:

from packageA import moduleA

引发此错误:

Traceback (most recent call last):
File "run.py", line 19, in <module>
from packageA import moduleA
ImportError: cannot import name moduleA

我想也许我在 moduleA 中做错了什么,但即使 moduleA 为空,导入也会引发同样的错误。似乎无法以某种方式导入此模块。这怎么可能?

我对所有 python 模块都有单独的单元测试文件,是的,moduleA 工作正常,没有任何错误。

4

1 回答 1

2

也许您正在从不同的位置导入不同版本的包。在你的脚本中试试这个以确保它是正确的——它应该打印__init__.py文件的完整路径。

import packageA
print packageA.__file__

此外,检查包的模块搜索路径是否已更改。通常这是一个包含一个元素的列表,即包的目录路径:

print packageA.__path__
于 2012-10-04T18:00:08.890 回答