Django自定义管理命令有时工作,有时不工作,具体取决于路径

时间:2012-01-11 12:47:18

标签: django ubuntu

这个故事发生在使用python 2.6.5的Ubuntu linux 10下。

我在django项目调用taskserver中创建了一个新的自定义命令。

当我在项目目录(/opt/acme/python-site/acme/并执行

python manage.py taskserver

自定义命令正确启动。

当我在/opt/acme/时,以下命令执行我的自定义taskserver命令:

python /opt/acme/python-site/acme/manage.py taskserver

当我在/opt/acme/deploy/时,以下命令(与上面相同)无法执行我的自定义taskserver命令:

python /opt/acme/python-site/acme/manage.py taskserver

它抱怨说:

Unknown command: 'taskserver'  
Type 'manage.py help' for usage.

即使我指定manage.py文件的完整路径,也知道为什么当前位置很重要?我需要从驻留在deploy目录中的结构脚本运行此命令。关于如何使这项工作的任何建议?

2 个答案:

答案 0 :(得分:2)

确保使用管理包的应用程序位于PYTHONPATH中。例如,如果taskserver.py在/opt/acme/python-site/acme/management/commands/taskserver.py

env PYTHONPATH=$PYTHONPATH:/opt/acme/python-site/acme python /path/to/manage.py taskserver

通常,指定manage.py的完整路径不一定能正确设置PYTHONPATH

Fabric也可能有自己设置PYTHONPATH环境变量的方法,我不记得了。但是使用env无论如何都应该有用。

答案 1 :(得分:0)

试试这个

python ../python-site/acme/manage.py taskserver

当你在/opt/acme/deploy/时,你必须回到之前的目录。按../,您就在/opt/acme/目录,此处manage.py的路径为../python-site/acme/manage.py