Django自定义命令没有出现在Heroku上

时间:2011-11-28 10:18:38

标签: django heroku

我在Heroku上使用django自定义命令时遇到问题。 在我的本地计算机上,如果我运行./manage.py帮助并运行./manage.py deletedphotos也会运行它,自定义命令会显示在帮助中。 所有 init .py文件都在那里,设置也正确,即我的本地和Heroku实例之间​​没有重大的配置差异。

现在,当我把它放在Heroku上时,它没有显示出来。所有其他非默认命令都在那里:ping_google来自安装sitemap.xml支持和命令以进行南迁移。但由于某种原因,我的自编命令没有显示出来。

我也向Heroku发送了一个支持请求,但几天之内没有收到他们的回复,所以我想我也会在这里发帖,也许有人有类似的问题。

如果重要的是,deletedphotos.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 个答案:

答案 0 :(得分:2)

我实际上能够找到解决方案。 INSTALLED_APPS引用了我的本地应用程序,但由于某种原因它没有按预期工作。

我的应用位于:/ name / appname /并且INSTALLED_APPS中的'name.appname'在本地设置中工作正常。

然而,在Heroku上,我不得不在INSTALLED_APPS中将引用更改为'appname',并且所有内容都开始神奇地工作。

答案 1 :(得分:1)

您的主目录需要位于Python路径上。快速且不引人注目的方法是将其添加到 PYTHONPATH 环境变量(在Heroku Cedar堆栈上通常为 / app )。

通过 heroku config 命令添加它:

$ heroku config:add PYTHONPATH=/app

应该这样做!更多细节: http://tomatohater.com/2012/01/17/custom-django-management-commands-on-heroku/

答案 2 :(得分:0)

我也有这个问题,在这里找到答案:Django Management Command 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