【问题标题】:Django custom commands not showing up on HerokuDjango 自定义命令未显示在 Heroku 上
【发布时间】:2012-01-07 19:47:39
【问题描述】:

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

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

我也向 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%。

【问题讨论】:

    标签: django heroku


    【解决方案1】:

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

    我的应用位于:/name/appname/ 并且在 INSTALLED_APPS 中有“name.appname”在本地设置中运行良好。

    然而,在 Heroku 上,我不得不在 INSTALLED_APPS 中将引用更改为“appname”,然后一切都开始神奇地工作了。

    【讨论】:

      【解决方案2】:

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

      通过 heroku config 命令添加它:

      $ heroku config:add PYTHONPATH=/app
      

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

      【讨论】:

      • 当我需要在 Heroku 上运行 manage.py 命令时,我只需输入 `heroku run python manage.py shell'(或任何其他命令,迁移等)。那么这个 your_app/manage.py 是什么?遵循您的教程对我没有帮助。 'your_app' 是什么意思?
      • 抱歉回复太晚了。这仅取决于您的 manage.py 所在的位置。如果您的不在子目录中,则不需要 your_app 部分。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-05
        • 2012-08-22
        • 1970-01-01
        • 1970-01-01
        • 2018-12-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多