Как получить доступ к модулю стандартной библиотеки в 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?
  • Импорт модуля Spyder
  • Пользовательский модуль Python не импортирует
  • Предотвращение импорта кода Python из определенных модулей?
  • Простой способ создать возможный случай
  • Ленивые переменные модуля - это можно сделать?
  • установка модуля запросов в окнах python 2.7
  • python как зарегистрировать динамический класс в модуле
  • Импорт пользовательских модулей в python из каталога
  • Теперь, когда Python 2.6 отсутствует, какие модули в настоящее время на языке должны знать каждый программист?
  • python: В чем причина не допускать * относительного импорта?
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.