Выполнение команды пользовательского управления Django - проблемы с путями - PullRequest
2 голосов
/ 14 января 2012

Я не понимаю, почему это не находит команду:

khandelwal@simba:/opt/code/cdcschool$ python schoolcommand/manage.py createcampaign
Unknown command: 'createcampaign'
Type 'manage.py help' for usage.

Когда это работает нормально:

khandelwal@simba:/opt/code/cdcschool$ cd schoolcommand/
khandelwal@simba:/opt/code/cdcschool/schoolcommand$ python manage.py createcampaign
Error: Provide: <type start_date end_date>

Здесь находится моя команда:

$ ls schoolcommand/management/
commands  __init__.py  __init__.pyc

$ ls schoolcommand/management/commands/
campaignmanager.py   createcampaign.py   __init__.py
campaignmanager.pyc  createcampaign.pyc  __init__.pyc

Как мне это исправить, чтобы я мог сделать:

khandelwal@simba:/opt/code/cdcschool$ python schoolcommand/manage.py createcampaign

Вот значения моего PYTHONPATH, DJANGO_SETTINGS_MODULE и единственного места, где находится мой settings.py.

khandelwal@simba:/opt/code/cdcschool$ ls
Procfile  README  requirements.txt  schoolcommand
khandelwal@simba:/opt/code/cdcschool$ echo $PYTHONPATH

khandelwal@simba:/opt/code/cdcschool$ echo $DJANGO_SETTINGS_MODULE

khandelwal@simba:/opt/code/cdcschool$ find . -name settings.py
./schoolcommand/settings.py
khandelwal@simba:/opt/code/cdcschool$

1 Ответ

5 голосов
/ 14 января 2012

Когда вы используете Django, есть два важных правила.

Первый.

У вас есть файл settings.py, который должен использоваться веб-сервером и все команды manage.py.Все они.

Местом поиска файла settings.py по умолчанию является текущий рабочий каталог.Вы можете изменить это с помощью переменной среды PYTHONPATH и DJANGO_SETTINGS_MODULE.

manage.py создан для вас в том же каталоге, что и settings.py.

.django-admin.py --settings=some.module, если вы не хотите использовать manage.py.

Second.

Команды manage.py не имеют никакого «пути» к ним.Все они всего лишь команды, состоящие из одного слова, независимо от того, где они находятся в дереве приложений.

Вы никогда не делаете этого: python schoolcommand/manage.py createcampaign если (каким-либо образом) ваш settings.pyнаходится не в том же каталоге, что и ваш manage.py.

Вы обычно делаете это:

cd /path/to/your/settings
python manage.py createcampaign

Если ваши настройки в code/schoolcommand, это означает, что вашвеб-сайт и все ваши команды будут работать в этом каталоге.

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