Как может модуль стандартной библиотеки (сказать, что математика) быть полученным доступ, когда файл prog.py помещается в тот же каталог как локальный модуль с тем же именем (math.py)?
Я задаю этот вопрос, потому что я хотел бы создать пакет uncertainties
тот может использовать как
import uncertainties
from uncertainties.math import *
Таким образом в каталоге неуверенности существует локальный математический модуль. Проблема состоит в том, что я хочу получить доступ к стандартному математическому модулю библиотеки от неуверенности / __ init __. py.
Я предпочитаю не переименовывать uncertainties.math, потому что этот модуль точно предназначается для замены функций от математического модуля (с эквивалентами, которые обрабатывают числовую неуверенность).
PS: этот вопрос принадлежит модулю, который я записал для выполнения вычислений с неуверенностью при принятии во внимание корреляций между переменными.
Вам нужен абсолютный / относительный импорт из PEP 328 , доступный с 2.5 и выше .
В Python 2.5 вы можете переключать поведение import для абсолютного импорта с использованием директивы from __future__ import absolute_import. Такое поведение абсолютного импорта станет по умолчанию в будущей версии (возможно, Python 2.7). Если по умолчанию используется абсолютный импорт, функция import math всегда найдет версию стандартной библиотеки. Рекомендуется, чтобы пользователи начали как можно чаще использовать абсолютный импорт, поэтому предпочтительно начинать писать со строки импорта pkg в коде.
Относительный импорт по-прежнему возможен путем добавления начальной точки к имени модуля при использовании формы импорта from ...:
from __future__ import absolute_import
# Import uncertainties.math
from . import math as local_math
import math as sys_math
Почему нельзя снова переименовать локальный модуль?
Понятно, что это не «полная» замена, если вам еще нужны вещи из установленных неопределенностей
.
Поскольку это частичная замена, вы не должны давать ему то же имя.
Что изменилось? Что то же самое? На основании этого выберите лучшее имя.