django-admin.py和在Dotcloud上改变PYTHONPATH的正确方法?

时间:2013-03-13 23:36:14

标签: python django pythonpath dotcloud

我没有manage.py并使用DJANGO_SETTINGS_MODULEdjango-admin.py的不同设置来在开发和生产环境之间切换。 Django docs和pydanny在Django" 2 Scoops of Django"中提出了这一点。

我的项目位于/home/dotcloud/current/bipolar。我的设置在/home/dotcloud/current/bipolar/bipolar/settings/dotcloud.py之后,遵循Django 1.5目录结构。 DJANGO_SETTINGS_MODuLE中的dotcloud.yml设置为bipolar.settings.dotcloud

我无法运行Dotcloud。当我只是按照示例教程时,我必须在export PYTHONPATH=/home/dotcloud/current/(hellodjango|bipolar):$PYTHONPATH脚本中添加postinstall

当使用主管推出芹菜时,事情变得非常毛茸茸。我试图运行命令django-admin.py celery worker。但无论我如何尝试将PYTHONPATH设置为/home/dotcloud/current/bipolar,都不会被提取。我试过了两次

command = "PYTHONPATH=/home/dotcloud/current/bipolar:$PYTHONPATH django-admin.py celery worker --loglevel=INFO -E"

environment=PYTHONPATH="/home/dotcloud/current/bipolar"
在supervisord.conf中

无济于事。我已经尝试将内容移动到shell脚本,在运行它之前设置路径......毕竟这适用于postinstall!它在shell上运行时确实有效,但在部署机器时它不起作用。

所以建议任何帮助!

编辑:我已经尝试了很多东西。我重新添加了一个既设置了正确的sys.path又设置了DJANGO_SETTINGS_MODULE的manage.py,但无济于事。最后,我添加了一个python-worker服务,除了失败两倍之外什么也没有做到(supervisord.conf读取了两个服务,是吧?)。

2 个答案:

答案 0 :(得分:0)

我知道这可能不起作用,但你试过了吗?

command = "cd /home/dotcloud/current/bipolar && django-admin.py celery worker --loglevel=INFO -E"

答案 1 :(得分:0)

结果the docs错了。无法在directory = $HOME/current/中设置supervisord.conf。将其替换为/home/dotcloud/current/,你就可以了。

我仍然无法让django-admin.py工作;我假设它在virtualenv之外用Python二进制文件调用。我发现manage.py有点hacky;有更好的方法吗?

我的工作supervisord.conf

[program:celery_beat]
directory = /home/dotcloud/current/bipolar/
stderr_logfile = /var/log/supervisor/%(program_name)s_error.log
stdout_logfile = /var/log/supervisor/%(program_name)s.log
command = /home/dotcloud/env/bin/python manage.py celery beat --loglevel=INFO

[program:celery_worker]
directory = /home/dotcloud/current/bipolar/
stderr_logfile = /var/log/supervisor/%(program_name)s_error.log
stdout_logfile = /var/log/supervisor/%(program_name)s.log
command = /home/dotcloud/env/bin/python manage.py celery worker -E --loglevel=INFO