【问题标题】:Python: Problem with local modules shadowing global modulesPython:本地模块覆盖全局模块的问题
【发布时间】:2009-01-29 14:04:51
【问题描述】:

我有一个像这样设置的包:

packagename/
    __init__.py
    numbers.py
    tools.py
    ...other stuff

现在在tools.py 中,我正在尝试导入标准库模块fractions。但是,fractions 模块本身导入了 numbers 模块,它应该是标准库中的那个。

问题是它尝试从 my 包中导入 numbers 模块(即我的 numbers.py 正在隐藏 stdlib numbers 模块),然后抱怨它,而不是导入 stdlib 模块。

我的问题是,是否有一种解决方法可以让我保持我的包的当前结构,或者是重命名我自己的违规模块的唯一解决方案 (numbers.py)?

【问题讨论】:

  • 对不起,应该更彻底地阅读 TFQ。无论如何,我现在正在尝试重现该问题,但我不能。发生错误时如何执行代码?我只能在包内运行代码时重现它。

标签: python


【解决方案1】:

absolute and relative imports 可以从 python2.5 开始使用(带有__future__ 导入),并且似乎是您正在寻找的。​​p>

【讨论】:

    【解决方案2】:

    我尽量避免遮蔽标准库。将你的模块重命名为“_numbers.py”怎么样?

    当然,你仍然可以这样做:

    import _numbers as numbers
    

    【讨论】:

      猜你喜欢
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      • 2020-12-02
      • 2012-06-10
      • 2014-09-16
      • 2015-06-14
      • 2014-05-21
      相关资源
      最近更新 更多