2 votes

Les commandes personnalisées de Django ne s'affichent pas sur Heroku

J'ai un problème lorsque j'utilise les commandes personnalisées de Django sur Heroku. Sur ma machine locale, la commande personnalisée apparaît dans l'aide si j'exécute ./manage.py help et l'exécution de ./manage.py deletedphotos l'exécute également. Toutes les init .py sont présents et les paramètres sont également corrects, c'est-à-dire qu'il n'y a pas de différences de configuration majeures entre mes instances locales et Heroku.

Maintenant, quand je le mets sur Heroku, il ne s'affiche pas. Toutes mes autres commandes hors défaut sont là : ping_google qui vient de l'installation du support sitemap.xml et les commandes pour les migrations vers le sud. Mais pour une raison quelconque, mes commandes écrites par moi-même ne s'affichent pas.

J'ai également envoyé une demande d'assistance à Heroku, mais je n'ai pas eu de réponse de leur part depuis quelques jours, alors j'ai pensé poster ici aussi, peut-être que quelqu'un a eu des problèmes similaires.

Le contenu du fichier deletedphotos.py est à peu près comme ceci si cela a de l'importance :

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)))

J'ai essayé de vérifier tous les chemins python corrects, etc., mais je ne suis pas sûr à 100% de ne pas manquer quelque chose d'évident.

2voto

margusholland Points 1632

J'ai réussi à trouver une solution. Mon application locale était référencée dans INSTALLED_APPS, mais pour une raison quelconque, elle ne fonctionnait pas comme prévu.

Mon application est dans : /name/appname/ et le fait d'avoir 'name.appname' dans INSTALLED_APPS fonctionnait bien dans la configuration locale.

Pourtant, sur Heroku, j'ai dû changer la référence à 'appname' dans INSTALLED_APPS et tout a commencé à fonctionner comme par magie.

1voto

Tomatohater Points 165

Votre répertoire personnel doit se trouver dans votre chemin Python. Une manière rapide et discrète d'y parvenir est de l'ajouter à la section PYTHONPATH (qui est généralement /app sur la pile Cedar de Heroku).

Ajoutez-le via le configuration d'heroku commandement :

$ heroku config:add PYTHONPATH=/app

Ça devrait le faire ! Pour plus de détails : http://tomatohater.com/2012/01/17/custom-django-management-commands-on-heroku/

0voto

J'ai eu ce problème aussi, j'ai trouvé la réponse ici : Commande de gestion Django ImportError

Il me manquait un __init__.py dans mon dossier de gestion. Après l'avoir ajouté, tout a bien fonctionné.

Exemple :

qsl/
    __init__.py
    models.py
    management/
        __init__.py
        commands/
            __init__.py
            news.py
    jobs/
        __init__.py
        news.py
    tests.py
    views.py

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X