Python Module с тире или дефис (-) в его имени

У меня есть существующий модуль python с тире в его имени, foo-bar.py

Изменение имени модуля – это то, что я бы предпочел избежать, поскольку модуль является общим, и мне пришлось бы преследовать все места, в которых он используется, чтобы мой специальный случай работал.

Есть ли способ загрузить модуль, чье имя содержит типично запрещенные «-»?

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

2 Solutions collect form web for “Python Module с тире или дефис (-) в его имени”

Вы можете сделать это с помощью __import__() . Например:

 foobar = __import__("foo-bar") 

Но вы действительно должны переименовать модуль. Таким образом, вы можете избежать путаницы, когда имя файла модуля отличается от имени, используемого в программе.

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

 import importlib mod = importlib.import_module("path.to.my-module") # mod.yourmethod() 

Согласно документам:

 "This provides an implementation of import which is portable to any Python interpreter. This also provides an implementation which is easier to comprehend than one implemented in a programming language other than Python." 

Только Python 2.7 +

  • Распространение имен и классы
  • Вложение Python в C: проблемы с импортом локальных модулей
  • Как я могу «поймать» ошибку seg при импорте модуля F2Py?
  • python: В чем причина не допускать * относительного импорта?
  • Python: модули и упаковка - почему файл __init__.py не выполняется до __main__.py?
  • Python: как импортировать из файла __init__.py?
  • Python: Как загрузить модуль дважды?
  • Список импорта модулей по умолчанию Spyder
  • Python - лучший язык программирования в мире.