Запуск задания Django Custom Manage.py Задача на Heroku - проблемы импорта

StackOverflow https://stackoverflow.com/questions/8380733

Вопрос

Я пытаюсь запустить пользовательскую команду 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/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top