Как импортировать модули из нескольких приложений в оболочке Django, используя относительный путь? - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь загрузить классы нескольких приложений в Django shell-plus, но я получаю сообщение о том, что не может найти модуль. Я хотел бы сказать интерпретатору оболочки загрузить модуль в каталог моего приложения, используя относительный путь. Как я могу это сделать? Разве интерпретатор оболочки не должен запускаться в root проекта?

Оболочка

from .app1.models import Class1
from .app2.models import Class2

ModuleNotFoundError: No module named '__main__.app1'; '__main__' is not a package

Структура файлов

project/
   __init__.py
   settings.py
   app1/
       __init__.py (empty)
       models.py
   app2/
       __init__.py (empty)
       models.py

/ project / __ init __. Py

from __future__ import absolute_import, unicode_literals

default_app_config = 'project.app1.apps.App1Config'

1 Ответ

0 голосов
/ 22 января 2020

Из командной строки должно быть:

from app1.models import Class1 # без точек перед приложением app1 или app2.

from app2.models import Class2

В этом случае на Django командная строка, вы должны быть в папке проекта, чтобы он работал.

Если где-то еще:

from project.app1.models import Class1

Вы можете проверить, где вы находитесь:


import os

cwd = os.getcwd()

print(cwd)

if cwd == 'any path':
    os.chdir('my_projectpath')

cwd = os.getcwd()

print(cwd)

from app1.models import Class1`


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...