Как получить доступ к модулю стандартной библиотеки в Python, когда есть локальный модуль с тем же именем?

Как можно получить доступ к стандартным библиотечным модулям (например, математике), когда файл prog.py помещается в тот же каталог, что и локальный модуль с тем же именем (math.py)?

Я задаю этот вопрос, потому что я хотел бы создать uncertainties пакета, которую можно использовать как

 import uncertainties from uncertainties.math import * 

Таким образом, внутри каталога неопределенностей есть локальный математический модуль. Проблема в том, что я хочу получить доступ к математическому модулю стандартной библиотеки из неопределенностей / __ init__.py.

Я предпочитаю не переименовывать неопределенности.math, потому что этот модуль точно предназначен для замены функций из математического модуля (с эквивалентами, которые обрабатывают числовые неопределенности).

PS: этот вопрос относится к модулю, который я написал для выполнения вычислений с неопределенностями , с учетом корреляций между переменными.

2 Solutions collect form web for “Как получить доступ к модулю стандартной библиотеки в Python, когда есть локальный модуль с тем же именем?”

Вы ищете Абсолютный / Относительный импорт из PEP 328 , доступный с 2,5 и выше .

В Python 2.5 вы можете переключить импорт на абсолютный импорт, используя директиву абсолютной_имости импорта __future__. Это абсолютное поведение импорта станет дефолтом в будущей версии (возможно, Python 2.7). После того, как абсолютный импорт будет по умолчанию, импортная математика всегда найдет версию стандартной библиотеки. Предполагается, что пользователи должны максимально использовать абсолютный импорт, поэтому лучше начать писать из строки импорта pkg в вашем коде.

Относительный импорт по-прежнему возможен путем добавления ведущего периода к имени модуля при использовании формы … from:

 from __future__ import absolute_import # Import uncertainties.math from . import math as local_math import math as sys_math 

Почему вы не можете повторно переименовать свой локальный модуль?

Очевидно, что это не «полная» замена, если вам все еще нужны вещи из установленных uncertainties .

Поскольку это частичная замена, вы не должны указывать одно и то же имя.

Что поделаешь? Что же? Выберите лучшее имя, основанное на этом.

  • Можете ли вы определить псевдонимы для импортированных модулей в Python?
  • Проверка версии модуля Python во время выполнения
  • Зависимость модуля Python
  • Python Module с тире или дефис (-) в его имени
  • Установка matplotlib и его зависимостей без привилегий root
  • Предотвращение импорта кода Python из определенных модулей?
  • В Python, как вы изменяете экземпляр объекта после перезагрузки?
  • Большинство полезных модулей Python из стандартной библиотеки?
  • Python - лучший язык программирования в мире.