Python:本地模块遮盖全局模块的问题

17

我的包被设置成这样:

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

现在,在 tools.py 中,我试图导入标准库模块 fractions。然而,fractions 模块本身导入了应该是标准库中的 numbers 模块。

问题在于它尝试从 我的 包中导入 numbers 模块(即我的 numbers.py 正遮盖着标准库中的 numbers 模块),然后抱怨它,而不是导入标准库模块。

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


抱歉,我应该更仔细地阅读TFQ。无论如何,我现在正在尝试重现这个问题,但是我无法做到。当错误发生时,您是如何执行代码的?我只能在从包内运行代码时重现它。 - Torsten Marek
2个回答

9
自Python2.5起(使用__future__导入),可以使用绝对和相对导入,这似乎是您要寻找的东西。

absolute and relative imports


7
我尽量避免阴影库。将您的模块重命名为“_numbers.py”如何?
当然,您仍然可以执行以下操作:
import _numbers as numbers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接