运行Django自定义管理命令 - 路径问题

时间:2012-01-13 21:16:49

标签: python django

我不明白为什么这找不到命令:

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 个答案:

答案 0 :(得分:5)

当您使用Django时,有两个重要规则。

首先

您有一个settings.py文件,网络服务器必须全部 manage.py命令。所有这些。

查找settings.py文件的默认位置是当前工作目录。您可以使用PYTHONPATHDJANGO_SETTINGS_MODULE环境变量更改此内容。

manage.py是在与settings.py

相同的目录中为您创建的。{/ 1}

如果您不想使用django-admin.py --settings=some.module,则可以使用manage.py

第二

manage.py命令没有任何“路径”。它们都只是一个单词的命令,无论它们碰巧存在于你的应用程序树中。

从不执行此操作:python schoolcommand/manage.py createcampaign除非(某种程度上)您的settings.py与您的manage.py不在同一目录中。

通常执行此操作:

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

如果您的设置位于code/schoolcommand,则表示您的网站和所有命令都将在该目录中运行。