在Python 2.5中找不到包模块,但在2.6中找到了
我有一个包的结构,长得像这样:
- ae
- util
util 里面有一个方法 mkdir(dir),这个方法的作用是根据给定的路径创建一个目录。如果这个目录已经存在,它不会报错;也就是说,它会悄悄地失败,不会给你任何提示。
目录 ae 和它的上级目录都在我的 PYTHONPATH 里。当我在 Python 2.6 中使用这个方法时,一切都很顺利。但是在 Python 2.5 中却出现了以下错误:
util.mkdir(SOURCES)
AttributeError: 'module' object has no attribute 'mkdir'
为什么 Python 2.6 能够顺利找到这个模块和它的方法,而 Python 2.5 却找不到呢?
3 个回答
0
这要看你在哪里调用这个方法,以及你导入了什么。如果你写:
from ae import util
util.mkdir(SOURCES)
那么应该没问题。
这个错误可能是因为Python 2.5和2.6在导入方面的政策不同。
2
可能是因为 Python 2.5 访问了一个不同版本的 util
,而那个版本里没有 mkdir
这个方法。
1
- 你是用
import ae.util
还是import util
呢?要么是ae
,要么是它的上级目录应该在 PYTHONPATH 里,但不能同时有这两个。 - 通过运行
print util
来确认你有正确的util
模块(这会打印出模块的源文件)。