在Python 2.5中找不到包模块,但在2.6中找到了

0 投票
3 回答
870 浏览
提问于 2025-04-15 19:19

我有一个包的结构,长得像这样:

  • 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 模块(这会打印出模块的源文件)。

撰写回答