Пользовательские команды Django не отображаются в Heroku - PullRequest
2 голосов
/ 28 ноября 2011

У меня проблема при использовании пользовательских команд django в Heroku. На моем локальном компьютере пользовательская команда появляется в справке, если я запускаю ./manage.py help и запускаю ./manage.py Удаленный запуск тоже выполняется. Там есть все init .py файлы, и настройки также правильные, то есть между моими локальными экземплярами и экземплярами Heroku нет существенных различий в конфигурации.

Теперь, когда я надеваю его на Heroku, оно не появляется. Здесь есть все мои другие команды, отличные от заданных по умолчанию: ping_google, полученный при установке поддержки sitemap.xml, и команды для миграции на юг. Но по какой-то причине мои собственные написанные команды не отображаются.

Я также отправил запрос в службу поддержки Heroku, но не получил от них ответа в течение нескольких дней, поэтому я подумал, что я также опубликую здесь, возможно, у кого-то были подобные проблемы.

Содержимое файла delephotos.py очень похоже на это, если это имеет значение:

from django.core.management.base import BaseCommand, CommandError
from foo.app.models import *

class Command(BaseCommand):
    help = 'Delete photos from S3'

    def handle(self, *args, **options):
        deleted_photos = Photo.objects.filter(deleted=True).exclude(large='', small='', thumb='')
        self.stdout.write('Found %s photos\n' % str(len(deleted_photos)))

Я попытался проверить все правильные пути Python и т. Д., Но не на 100%, если я не пропустил что-то очевидное.

Ответы [ 3 ]

2 голосов
/ 29 ноября 2011

Я действительно смог найти решение. На INSTALLED_APPS ссылались на мое локальное приложение, но по какой-то причине оно не работало должным образом.

Мое приложение находится в: / name / appname /, и с именем name.appname в INSTALLED_APPS все работало нормально при локальной настройке.

Тем не менее, в Heroku мне пришлось изменить ссылку на просто «имя приложения» в INSTALLED_APPS, и все начали работать волшебным образом.

1 голос
/ 17 января 2012

Ваш домашний каталог должен быть на вашем пути Python.Быстрый и ненавязчивый способ сделать это - добавить его в переменную окружения PYTHONPATH (обычно это / app в стеке Heroku Cedar).

Добавить егочерез команду heroku config :

$ heroku config:add PYTHONPATH=/app

Это должно сделать это!Для более подробной информации: http://tomatohater.com/2012/01/17/custom-django-management-commands-on-heroku/

0 голосов
/ 20 февраля 2014

У меня тоже была эта проблема, я нашел ответ здесь: Команда управления Django ImportError

В моей папке управления отсутствовал файл __init__.py.После добавления все работало нормально.

Пример:

qsl/
    __init__.py
    models.py
    management/
        __init__.py
        commands/
            __init__.py
            news.py
    jobs/
        __init__.py
        news.py
    tests.py
    views.py
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...