Подтвердить что ты не робот

Как ссылаться на пакет python, когда имя файла содержит период

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

from "models.admin" import *

однако, я получаю синтаксическую ошибку для двойных кавычек. Но если я просто делаю

from models.admin import *

то я получаю "ImportError: No module named admin"

Есть ли способ импортировать из файла python (который имеет период в его имени)?

4b9b3361

Ответ 1

На самом деле вы можете импортировать модуль с недопустимым именем. Но вам нужно использовать imp для этого, например. если файл называется models.admin.py, вы можете сделать

import imp
with open('models.admin.py', 'rb') as fp:
    models_admin = imp.load_module(
        'models_admin', fp, 'models.admin.py',
        ('.py', 'rb', imp.PY_SOURCE)
    )

Но прочитайте документы на imp.find_module и imp.load_module, прежде чем вы начнете использовать его.

Ответ 2

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

Ответ 3

Файл называется models/admin.py. (Источник)

То есть его следует называть admin.py в каталоге с именем models.

Затем вы можете импортировать с помощью from models.admin import *, считая, что он находится в вашем пути Python.

Ответ 4

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

Ответ 5

Вы не ссылаетесь на файлы в инструкции import, вы ссылаетесь на модули и пакеты.

Пожалуйста, прочитайте docs, они очень понятны в этом вопросе.

В любом случае, поскольку вы используете django, обычный подход не будет работать. Если вы хотите сохранить модели в отдельных файлах, а не в models.py, вам нужно предпринять дополнительные шаги, описанные, например, здесь.

Edit:
Ну, я не знаю, что означает опросник, когда он упоминает администратора и независимо от того, связано ли это с админ-интерфейсом django. Мои очки все еще стоят.