Я хочу запустить автономный скрипт csvImp.py, который взаимодействует с базой данных, используемой моим сайтом Django BilliClub. Я запускаю сценарий из корня проекта (~/BilliClub) в моей виртуальной среде django2.

Я выполнил инструкции здесь, но для DJANGO_SETTINGS_MODULE, а не секретный ключ. Меня сбивает с толку то, какое значение присвоить переменной окружения. Каждая итерация, которую я пробовал, приводила к ошибке типа ModuleNotFoundError: No module named 'BilliClub' после запуска (django2) 04:02 ~/BilliClub $ python ./pigs/csvImp.py.

Я перезагружаю оболочку каждый раз, когда пытаюсь изменить переменную в .env, поэтому скрипт postactivate запускается каждый раз, и я обязательно повторно ввожу свой виртуальный сервер. Проблема заключается в том, что я не могу понять, как перейти к модулю настроек.

Файл .env:

# /home/username/BilliClub/.env #

DJANGO_SETTINGS_MODULE="[what goes here???]" 

Полный путь к моему settings.py равен /home/username/BilliClub/BilliClub/settings.py.

Сокращенные результаты запуска tree:

(django2) 04:33 ~ $ tree
.
├── BilliClub
│   ├── BilliClub
│   │   ├── __init__.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   ├── manage.py
│   ├── media
│   ├── pigs
│   │   ├── __init__.py
│   │   ├── admin.py
│   │   ├── apps.py
│   │   ├── bc2019.csv
│   │   ├── csvImp.py
│   │   ├── models.py
│   │   ├── models.pyc
│   │   ├── tests.py
│   │   ├── urls.py
│   │   └── views.py
│   └── ...
0
K1nesthesia 26 Ноя 2020 в 08:42

1 ответ

Лучший ответ

Похоже, вам нужно создать csvImp специальную команду управления, а затем DJANGO_SETTINGS_MODULE равно "BilliClub.settings" Когда вы пишете свою служебную функцию как команду управления Django, вы получаете всю конфигурацию Django бесплатно, а корневой каталог вашей команды совпадает с корневым каталогом веб-приложения, и это каталог, в котором находится manage.py.

Взгляните на https://docs.djangoproject.com/en /3.1/howto/custom-management-commands/

2
Filip 26 Ноя 2020 в 09:22