django custom manage.pyタスクを実行しているHeroku-問題のインポート
-
28-10-2019 - |
質問
HerokuでスケジュールされたタスクとしてカスタムDjangoコマンドを実行しようとしています。以下を介してローカルにカスタムコマンドを実行することができます。 python manage.py send_daily_email
. 。 (注:カスタム管理コマンド自体に問題はありません)
ただし、Herokuは、Heroku Scheduler Addonを介してタスクを「実行」しようとするときに、次の例外を与えています。
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
Pythonスクリプトを入れました /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
-Pythonシェルを起動し、正常にインポートします settings
から django.conf
私はそれが私と関係があると確信しています PYTHON_PATH
またはジュンゴの視認性 SETTINGS_MODULE
, 、しかし、問題を解決する方法がわかりません。誰かが私を正しい方向に向けることができますか?私がここでやろうとしていることを達成する簡単な方法はありますか?
事前にあなたのヒントとアドバイスをありがとうございました! Herokuに新しく! :)
編集:
Nixのコメントによると、私はいくつかの調整を行い、正確な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 run bin/python app/manage.py」を実行すると表示されます。
答えに出くわした場合は、アップデートを保持します。
解決
おそらく別の通訳を使用しています。
Shell Pythonがスクリプト/usr/bin/pythonで参照しているものと同じであることを確認してください。あなたの道に別のものがあるかもしれません、それはあなたが走ったときにそれが機能する理由を説明するでしょう python manage.py
しかし、明示的に参照するシェルスクリップではありません /usr/bin/python
.
タイピング which python
あなたの道で通訳が見つかっている通訳を教えてくれます。
他のヒント
さらに、これはPythonパスにホームディレクトリを追加することで解決することもできます。それを達成するための迅速かつ控えめな方法は、それをPythonPath環境変数に追加することです(これは一般にHeroku Cedarスタックのアプリです)。
Heroku configコマンドを介してそれを追加します:
$ heroku config:add PYTHONPATH=/app
それはそれをするはずです!詳細については: http://tomatohater.com/2012/01/17/custom-django-management-commands-on-heroku/