2011-12-05 3 views
5

사용자 정의 django 명령을 Heroku에서 예약 된 작업으로 실행하려고합니다. 로컬로 사용자 정의 명령을 실행할 수 있습니다 : python manage.py send_daily_email.Heroku에서 Django 사용자 지정 manage.py 작업 실행 - 가져 오기 문제

Traceback (most recent call last): 
    File "bin/send_daily_visit_email.py", line 2, in <module> 
    from django.conf import settings 
ImportError: No module named django.conf 

I :에 "실행"Heroku가 스케줄러 부가 기능을 통해 작업을 시도 할 때

그러나, Heroku가 나에게 다음과 같은 예외를주고있다 (참고 : 나는 사용자 지정 관리 명령 자체에 문제가 없습니다) /bin/send_daily_email.py에서 파이썬 스크립트를 배치하고, 그것은 다음과 같다 :

#! /usr/bin/python 
from django.conf import settings 
settings.configure() 
from django.core import management 

management.call_command('send_daily_email') #delegates off to custom command 

는 Heroku가 내 그러나, 나는 heroku run bin/python을 실행할 수 있어요 - 파이썬 쉘을 실행 - 성공 완전히 내가 장고의 SETTINGS_MODULEPYTHON_PATH 가시성이 함께 할 수있는 뭔가가 꽤 확신 django.conf

에서 settings를 가져,하지만 난 문제를 해결하는 방법을 확실 해요. 누군가가 올바른 방향으로 나를 가리킬 수 있을까요? 내가 여기서하려는 일을 성취하기위한 쉬운 방법이 있습니까?

미리 알려 주셔서 감사합니다. Heroku에 새로운! :)

편집 :

당 닉스의 코멘트, 나는 약간의 조정을, 내 정확한 파이썬 경로를 지정하는 것을 발견 않았다, 나는 장고 설정 과거를 얻을했다.

는 이제 나타납니다

File "/app/lib/python2.7/site-packages/django/core/management/__init__.py", line 155, in call_command 
    raise CommandError("Unknown command: %r" % name) 
django.core.management.base.CommandError: Unknown command: 'send_daily_email' 

있지만, 나는 'send_daily_email'볼 수 있습니다 내가 실행할 때``Heroku가이 빈/파이썬 응용 프로그램/manage.py```를 실행합니다.

답변을 찾으면 업데이트를 계속하겠습니다.

답변

3

아마도 다른 통역사를 사용하고있을 것입니다.

쉘 파이썬이/usr/bin/python 스크립트에서 참조하는 것과 동일한지 확인하십시오. 경로 상 다른 경로가있을 수 있습니다. 이는 python manage.py을 실행할 때 작동하는 이유를 설명하지만 명시 적으로 /usr/bin/python을 참조하는 셸 스크립트는 실행되지 않을 수 있습니다.


입력하면 which python은 경로에서 발견 된 인터프리터를 알려줍니다.

+0

와우. 네가 옳아. 내가''heroku를 bin/python bin/send_daily_email.py''' (대개''heroku run bin/send_daily_email.py)라고 부르면됩니다.나는 나의 대답을 수정하고 당신이 도울 수 있는지보기 위해 나의 현재의 반응을 보여줄 것이다 :) 그러나 나는 당신이 그 질문에 답했다는 것을 말할 것이다. – kturner

2

또한 파이썬 경로에 홈 디렉토리를 추가하여 해결할 수도 있습니다. 이를 수행하는 빠르고 눈에 띄지 않는 방법은 PYTHONPATH 환경 변수 (일반적으로 Heroku 삼나무 스택의/app)에 추가하는 것입니다.

Heroku가 config 명령을 통해 추가 : 그것을

$ heroku config:add PYTHONPATH=/app 

해야한다고! 세부 정보 : http://tomatohater.com/2012/01/17/custom-django-management-commands-on-heroku/