我在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%。
答案 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