Проблема импорта файлов - python Django
У меня есть файл в папке management/commands, и я пытаюсь импортировать свои модели в папку report.py. Однако я получаю следующую ошибку.
Traceback (most recent call last):
File "c:\Users\Timmeh\source\Python\Django Projects\env\topxgym\members\management\commands\report.py", line 2, in <module>
from members.models import ActiveMember
ModuleNotFoundError: No module named 'members'
У меня есть файл active.py в той же папке с тем же импортом, и он работает. Однако active.py запускается из python manage.py active. Report.py я просто компилирую/запускаю (не запуская его из python manage.py). Это единственное различие.
Пожалуйста, не забудьте добавить __init__.py
для каждой папки, в которую вы хотите что-то импортировать.
Больше здесь: https://docs.python.org/3/reference/import.html#regular-packages
Вот грязный хак, который должен решить проблему.
и я также укажу альтернативный вариант, если он подходит для вашего случая использования.
Первый вариант
import sys
sys.path.append(r'c:\Users\Timmeh\source\Python\Django Projects\env\topxgym')
# now your import should work
from members.models import ActiveMember
Это грязно, потому что он манипулирует путями sys, что не является хорошей практикой. Я предполагаю, что этот скрипт - просто отдельный скрипт, который вы хотите запустить, поэтому в целом это не должно быть проблемой.
Второй вариант
Если это возможно, вы можете просто переместить ваш report.py
и держать его внутри папки topxgym
(на том же уровне, что и requirements.txt
)
В этом случае также будет работать тот же оператор import.
побочная заметка
Если вы хотите получить доступ к ORM из отдельного скрипта, похоже, что вам не хватает добавления конфигурации django в скрипт, как рекомендуется в документации.
После того как проблемы с импортом будут устранены одним из двух вышеперечисленных способов, если он работает, то отлично. Если нет, это означает, что вам нужно добавить конфигурацию django.setup()
и указать файл настроек.