【问题标题】:Package module not found in Python 2.5, but found in 2.6在 Python 2.5 中找不到包模块,但在 2.6 中找到
【发布时间】:2010-02-16 07:49:24
【问题描述】:

我的包结构如下所示:

  • ae
    • 实用工具

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 却不能?

【问题讨论】:

    标签: python module packages package


    【解决方案1】:

    也许 Python 2.5 正在访问不具有 mkdir 方法的不同版本的 util

    【讨论】:

      【解决方案2】:
      • 你是import ae.util 还是import utilae 或其父目录应该在 PYTHONPATH 中,但不能同时在两者中
      • 通过运行print util 验证您拥有正确的util 模块(将打印模块的源文件)

      【讨论】:

      • 我确定将 ae 的父目录放在我的 PYTHONPATH 中,而不是 ae 本身。谢谢!
      【解决方案3】:

      这取决于你在哪里调用这个方法,以及你的导入是什么。如果你写:

      from ae import util
      util.mkdir(SOURCES)
      

      一切都应该没问题。

      这个错误可能是因为 Python 2.5 和 2.6 的导入策略不同。

      【讨论】:

      • 在导入方面从 2.5 到 2.6 有何变化?我认为“absolute_import”(在 __future__ 中)在 2.6 中仍然是必需的,并且只会在 2.7 和 3.x 中成为默认值。
      猜你喜欢
      • 1970-01-01
      • 2020-09-26
      • 2020-09-15
      • 2015-11-07
      • 2021-09-10
      • 2020-09-24
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多