2011-12-05 11 views
5

私は、Herokuでスケジュールされたタスクとしてカスタムdjangoコマンドを実行しようとしています。私はローカルでカスタムコマンドを実行することができます:python manage.py send_daily_email。 (注:私は、カスタム管理コマンド自体に問題を持っていない)HerokuでDjangoのカスタムmanage.pyタスクを実行中 - インポートの問題

に「ファイル名を指定して実行」Herokuのスケジューラのアドオンによるタスクしようとしたときしかし、Herokuのは、私に次の例外を与えている:私は

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 

/bin/send_daily_email.pyでPythonスクリプトを置き、そして、それは以下の通りです:

#! /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を実行することができています - Pythonシェルを起動する - と成功完全django.conf

からsettingsをインポート私はそれがDjangoのSETTINGS_MODULEに私のPYTHON_PATHまたは可視性とは何かを持っているかなり確信しているが、私は問題を解決する方法がわかりませんよ。誰かが私を正しい方向に向けることができますか?私がここでやろうとしていることを達成するための簡単な方法はありますか?

事前にアドバイスをいただきありがとうございます。 Herokuに新しい! :)

EDIT:

パーニックスさんのコメントは、私はいくつかの調整をした、と私の正確なPythonのパスを指定することを発見しました、私は、Djangoの設定を過ぎて手に入れました。

は、私が今受け取る:

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のは、ビン/ Pythonアプリケーション/ manage.py```を実行します。

私は答えを見つけたら更新します。

答えて

3

おそらく別のインタープリタを使用しています。

シェルのPythonが、あなたのスクリプト/ usr/bin/pythonで参照しているものと同じであることを確認してください。あなたのパスには別のものがあり、python manage.pyを実行しても明示的に/usr/bin/pythonを参照しているシェルスクリプトは実行されない理由を説明します。


入力すると、あなたのパスにどのインタープリタが見つかっているかがわかります。

+0

ワウです。あなたが正しい。私が '' herokuをbin/python bin/send_daily_email.py'''( '' 'heroku run bin/send_daily_email.py)と呼ぶとき。私は私の答えを修正し、あなたが助けることができるかどうかを見るために私の現在の反応を示すでしょう:)しかし、私はあなたが質問に答えたと言います。 – kturner

2

さらに、これはホームディレクトリをPythonパスに追加することによっても解決できます。それを達成するための迅速かつ控えめな方法は、PYTHONPATH環境変数(これは一般的にHeroku Cedarスタックの/ app)に追加することです。

は、Herokuのconfigコマンドを経由して、それを追加します。

それを行う必要があります
$ heroku config:add PYTHONPATH=/app 

を!詳細はhttp://tomatohater.com/2012/01/17/custom-django-management-commands-on-heroku/

関連する問題