代码之家  ›  专栏  ›  技术社区  ›  Eric O. Lebigot

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

  •  14
  • Eric O. Lebigot  · 技术社区  · 15 年前

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

    我问这个问题是因为我想创建一个包 uncertainties

    import uncertainties
    from uncertainties.math import *
    

    因此,目录中有一个本地数学模块。问题是,我想从influences/\uuuu init\uuuu.py访问标准库数学模块。

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

    PS:这个问题与我为执行任务而编写的模块有关 calculations with uncertainties

    2 回复  |  直到 13 年前
        1
  •  22
  •   Cristian Ciupitu    10 年前

    PEP 328 ,可于 2.5 and upward .

    在Python2.5中,您可以使用from _uFUTURE _uu import ABSOLATE u 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
    
        2
  •  4
  •   S.Lott    15 年前

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

    很明显,如果您仍然需要安装的软件中的东西,那么它不是“完全”替换 uncertainties .