0

Как сослаться на пакет Python, если в имени файла есть точка?

8

Я использую Django и у меня есть файл с именем models.admin.py. Я хочу реализовать следующую идею в файле models.py:

from "models.admin" import *

Однако я получаю синтаксическую ошибку из-за использования двойных кавычек. Если же я просто делаю

from models.admin import *

то получаю ошибку "ImportError: No module named admin".

Есть ли способ импортировать из файла Python, у которого в названии есть точка?

2 ответ(ов)

0

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

0

Если вы действительно хотите, вы можете импортировать модуль с необычным именем (например, с точкой в имени до '.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.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь