Как импортировать модуль, когда в имени модуля есть "-" тире или дефис?
Я хочу импортировать foo-bar.py. Это работает:
foobar = __import__("foo-bar")
Это не означает:
from "foo-bar" import *
Мой вопрос: Можно ли использовать этот формат, т.е. from "foo-bar" import *, чтобы импортировать модуль с - в нем?
Ответ 1
вы не можете. foo-bar не является идентификатором. переименуйте файл в foo_bar.py
Изменить: Если import не является вашей целью (как в: вам не важно, что происходит с sys.modules, вам не нужно его импортировать), просто получая все файловых глобалов в вашу собственную область действия, вы можете использовать execfile
# contents of foo-bar.py
baz = 'quux'
>>> execfile('foo-bar.py')
>>> baz
'quux'
>>>
Ответ 2
Если вы не можете переименовать модуль в соответствии с соглашениями об именах Python, создайте новый модуль для работы в качестве посредника: