Запуск задания Django Custom Manage.py Задача на Heroku - проблемы импорта
-
28-10-2019 - |
Вопрос
Я пытаюсь запустить пользовательскую команду Django в качестве запланированной задачи на Heroku. Я могу выполнить пользовательскую команду локально через: python manage.py send_daily_email
. Анкет (Примечание: у меня нет проблем с самой командой управления))
Тем не менее, 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
Я поместил сценарий 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 run bin/python
- Запустите Python Shell - и успешно импортируйте settings
из django.conf
Я уверен, что это как -то связано с моим PYTHON_PATH
или видимость к Джанго SETTINGS_MODULE
, но я не уверен, как решить проблему. Может ли кто -нибудь указать мне в правильном направлении? Есть ли более простой способ выполнить то, что я пытаюсь сделать здесь?
Большое спасибо за ваши советы и советы заранее! Новичок в Хероку! :)
РЕДАКТИРОВАТЬ:
В комментарии Никса я внес несколько корректировок и обнаружил, что определение моего точного пути 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 (которая, как правило, является /приложением в стеке Cedar Heroku).
Добавьте его через команду конфигурации Heroku:
$ heroku config:add PYTHONPATH=/app
Это должно это сделать! Больше подробностей: http://tomatohater.com/2012/01/17/custom-django-management-commands-on-heroku/