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

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

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

import uncertainties
from uncertainties.math import *

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

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

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

15
задан bignose 25 July 2011 в 05:35
поделиться

2 ответа

Вам нужен абсолютный / относительный импорт из 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
20
ответ дан 1 December 2019 в 02:55
поделиться

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

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

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

Что изменилось? Что то же самое? На основании этого выберите лучшее имя.

5
ответ дан 1 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: