2012-05-04 4 views
2

사용자 정의 Django 관리 명령을 실행하기 위해 cron을 실행하려고합니다. DotCloud에서 실행 중입니다. 크론 실행, 나는 다음과 같은 오류 얻을 때Django 관리 명령 Cron on Dotcloud

는 :

Traceback (most recent call last): 
File "./manage.py", line 2, in <module> 
from django.core.management import execute_manager 
ImportError: No module named django.core.management 

을 나는 크론이 노출 된 환경에서 실행되고 있기 때문이라고 생각합니다, 그래서 수동으로 같은 크론에서 PYTHONPATH를 설정했습니다. 다음은이 명령은 ...

PYTHONPATH=/home/dotcloud/env/lib/python2.6/site-packages/setuptools-0.6c11-  
py2.6.egg:/home/dotcloud/env/lib/python2.6/site-packages/pip-1.0.1-   

py2.6.egg :/홈/dotcloud/현재 : /home/dotcloud/env/lib/python2.6 :/dotcloud/ENV/lib 디렉토리/python2/집/home/dotcloud/env/lib/lib/python2.6/lib/python2.6/lib-dynload : /usr/lib/python2.6 : /usr/lib64/python2.6 : /usr/lib/python2.6/plat-linux2 : /usr/lib/python2.6/lib- tk : /usr/lib64/python2.6/lib-tk : /home/dotcloud/env/lib/python2.6/site-packages : /usr/local/lib/python2.6/dist-packages/virtualenv-1.6 .1-py2.6.egg : /usr/local/lib/python2.6/site-packages : /usr/local/lib/python2.6/dist-packages : /usr/lib/python2.6/dist- 패키지 : /usr/lib/pymodules/python2.6

오류가 계속 발생합니다. 반지와 나는 무슨 일이 일어나고 있는지 잘 모르겠다. 어떤 조언을 많이 주시면 감사하겠습니다.

감사합니다.

+0

새 오류로 질문을 업데이트 할 수 있습니까? 지금 crontab 항목에 대해 게시 할 수 있습니까? –

답변

7

맞습니다. cron 작업은 "베어"환경에서 실행됩니다.

대신이 일을

:

* * * * * /home/dotcloud/current/myapp/manage.py args... 

당신은이 작업을 수행해야합니다

* * * * * /home/dotcloud/env/bin/python /home/dotcloud/current/myapp/manage.py args... 

~/env/bin 자동으로 설치가 올바른 환경에 포함 된 python 인터프리터를 실행합니다.

+0

그게 한 걸음 더 나아 간다. 이 작업을 수행하면 실행하려고하는 사용자 지정 명령이 존재하지 않는다는 오류가 발생합니다. 쉘에서 실행하면 완벽하게 작동합니다. 나는 manage.py 디렉토리에서 명령을 실행해야한다는 것을 읽었지만 잘 모르겠습니다. 생각? – user523513

+0

@ user523513 django 관리 명령은 jpetazzo가 말한 것을 수행하고 python 및 manage.py에 대한 완전한 경로를 사용하면 정상적으로 실행됩니다. 작동하지 않는 유일한 이유는 관리 명령이 어떤 이유로 든 현재 실행중인 디렉토리를 사용하고있는 경우입니다 어쩌면 현재 디렉토리를 찾고 파일을 삭제하거나 그런 식으로. 이는 좋은 습관이 아니므로 대부분의 관리 명령은이를 수행하지 않습니다. –

+0

@ user523513과 똑같은 문제가 있습니다. 현재 실행중인 디렉토리를 사용하려고하는 관리 명령의 경우는 아닙니다. Django가 처음부터 관리 명령을 찾지 못한 것은 문제입니다. 나는 이미 virtualenv의 파이썬 인터프리터를 사용하고 있으며, "알 수없는 명령"을 얻는다. – Kal