Не могу импортировать пакеты верхнего уровня в django проекте - PullRequest
2 голосов
/ 29 февраля 2020

Я работаю над проектом django, который требует от меня импорта кода из другого пакета. Например, в моем "домашнем" приложении я импортирую из приложения "пользователи". В моем представлении index.py в домашнем приложении я использую from project.users import services. Запуск этого из python оболочки работает нормально, однако, если я пытаюсь запустить python3 manage.py runserver, я получаю ошибку ModuleNotFoundError: No module named 'project.users'. Я попытался добавить каталог моего проекта и его родителя в мой sys.path, однако ничего не изменилось. Я также попытался использовать другую машину и venv безуспешно. Как бы я мог это исправить?

Редактировать: я также пытался запустить from project.users import services из оболочки django (python3 manage.py shell), и я получаю ту же ошибку импорта.

Ответы [ 2 ]

1 голос
/ 29 февраля 2020

Я решил проблему, изменив свой импорт с from project.users import services на from users.import services.

Кроме того, чтобы исправить красные подчеркивания в pycharm, просто пометьте свой проект root (папка "project" в моем пример) как источники root (щелкните правой кнопкой мыши> Отметить каталог как ..> Источники root).

(ответ @ BearBrown, кредит ему)

0 голосов
/ 29 февраля 2020

Каждый django проект поставляется с файлом settings.py, и django откажется запускать или загружать модели, пока не будет загружен этот файл settings.py.

файл settings.py должен быть в модуле и части вашей текущей PYTHONPATH, и env. переменная DJANGO_SETTINGS_MODULE должна быть установлена ​​на нее.

Например:

# assuming your file is under /myproject/mywebsite/settings.py
export PYTHONPATH=/myproject/
export DJANGO_SETTINGS_MODULE=mywebsite.settings

Редактировать:

Если вы находитесь в virtualenv, вам необходимо активировать прежде чем вы сможете запустить ./manage.py 'command'

source path/to/your/virtualenv/bin/activate
...