Как сослаться на пакет Python, если в имени файла есть точка?
Я использую Django и у меня есть файл с именем models.admin.py
. Я хочу реализовать следующую идею в файле models.py
:
from "models.admin" import *
Однако я получаю синтаксическую ошибку из-за использования двойных кавычек. Если же я просто делаю
from models.admin import *
то получаю ошибку "ImportError: No module named admin".
Есть ли способ импортировать из файла Python, у которого в названии есть точка?
2 ответ(ов)
Нет, вы не можете импортировать файл на Python как модуль, если его имя содержит точку (или вопросительный знак, восклицательный знак и т.д.). Имя модуля на Python (без учета .py) должно быть допустимым именем на Python (то есть его можно использовать в качестве имени переменной).
Если вы действительно хотите, вы можете импортировать модуль с необычным именем (например, с точкой в имени до '.py'), используя модуль imp:
>>> import imp
>>> a_b = imp.load_source('a.b', 'a.b.py')
>>> a_b.x
"I was defined in a.b.py!"
Тем не менее, это, как правило, плохая идея. Скорее всего, вы пытаетесь использовать пакеты, в таком случае вам следует создать директорию с именем "a", содержащую файл с именем "b.py", и затем вы сможете просто использовать import a.b
, чтобы загрузить a/b.py.
Как разгрузить (перезагрузить) модуль Python?
Импорт модулей из родительской папки
Как импортировать другие файлы Python?
Ошибка относительного импорта: выход за пределы верхнего уровня пакета
Как найти местоположение исходников модуля Python?