17

当文件 prog.py 与同名的本地模块(math.py)放在同一目录中时,如何访问标准库模块(比如数学)?

我问这个问题是因为我想创建uncertainties一个可以用作的包

import uncertainties
from uncertainties.math import *

因此,不确定性目录中有一个本地数学模块。问题是我想从不确定性/__init__.py 访问标准库数学模块。

我不想重命名不确定性.math,因为这个模块正是为了替换数学模块中的函数(使用处理数值不确定性的等价物)。

PS:这个问题与我编写的模块有关,该模块用于执行具有不确定性的计算,同时考虑变量之间的相关性。

4

2 回答 2

22

您正在寻找来自PEP 328的 Absolute/Relative 导入,可用于2.5 及更高版本。

在 Python 2.5 中,您可以使用 from __future__ import absolute_import 指令将导入的行为切换为绝对导入。这种绝对导入行为将成为未来版本(可能是 Python 2.7)中的默认行为。一旦绝对导入成为默认值,导入数学将始终找到标准库的版本。建议用户应尽可能开始使用绝对导入,因此最好在代码中从 pkg 导入字符串开始编写。

使用 from ... 导入形式时,仍然可以通过在模块名称中添加前导句点来进行相对导入:

from __future__ import absolute_import
# Import uncertainties.math
from . import math as local_math
import math as sys_math
于 2009-12-14T11:21:00.710 回答
4

为什么不能再次重命名本地模块?

显然,如果您仍然需要已安装的uncertainties.

由于它是部分替换,因此您不应为其命名。

有什么不同?有什么相同的?在此基础上选择一个更好的名称。

于 2009-12-14T11:18:05.157 回答