#python #python-3.x #python-import
#python #python-3.x #python-импорт
Вопрос:
Итак, у меня есть скрипт, который импортирует стандартный модуль checkmarc.
import checkdmarc
Я хочу реализовать некоторую фиктивную галочку, которая будет располагаться в том же каталоге, что и скрипт.
Теперь когда-нибудь он будет там, и я хочу, чтобы скрипт извлек этот локальный модуль, и если его там нет, он должен принять стандартную галочку.
Я знаю, что могу сделать что-то вроде, если файл в пути существует, он примет это, иначе сделайте это, но я хочу сохранить только строку импорта import checkmarc
.
Из чтения: https://docs.python.org/3/whatsnew/2.5.html#pep-328-absolute-and-relative-imports там есть раздел именно того, что мне нужно, но только для Python 2.4 и ниже:
В Python 2.4 и более ранних версиях сначала выполняется поиск в каталоге пакета для выполнения относительного импорта, находит pkg/string.py , импортирует содержимое этого файла как модуль pkg.string, и этот модуль привязан к строке имени в пространстве имен модуля pkg.main.
Если есть элегантный способ сделать это, я хотел бы услышать.
Ответ №1:
Я не думаю, что вы сможете это сделать, если ваш пользовательский модуль имеет то же имя. Однако вы можете сделать что-то вроде этого:
try:
import customcheckdmarc as checkdmarc
except ImportError:
import checkdmarc as checkdmarc
это загрузит ваш customecheckedmarc.py если он есть и в противном случае загрузит checkdmarc по умолчанию.