当存在具有相同名称的本地模块时,如何在Python中访问标准库模块?

Eri*_*got 15 python import module standard-library

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

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

import uncertainties
from uncertainties.math import *
Run Code Online (Sandbox Code Playgroud)

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

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

PS:这个问题与我为执行不确定性计算而编写的模块有关,同时考虑了变量之间的相关性.

mba*_*hau 20

您正在寻找PEP 328的绝对/相对进口,2.5及以上可供选择.

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

使用from ... import表单时,通过向模块名称添加前导句点仍然可以进行相对导入:

from __future__ import absolute_import
# Import uncertainties.math
from . import math as local_math
import math as sys_math
Run Code Online (Sandbox Code Playgroud)

  • "可能在2.7" - 实际上从未发生过.2.7用户如果想要这种行为,则需要absolute_import行. (4认同)

S.L*_*ott 5

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

显然,如果您仍然需要安装的东西,它不是"全部"替代品uncertainties.

由于它是部分替换,因此您不应该使用相同的名称.

有什么不同?有什么相同的?根据它选择一个更好的名称.