2011-11-28 52 views
2

在Heroku上使用django自定義命令時出現問題。 在我的本地機器上,如果我運行./manage.py幫助並運行./manage.py deletedphotos也運行它,那麼定製命令會出現在幫助中。 所有的init .py文件在那裏,設置也是正確的,即我的本地和Heroku實例之間​​沒有主要的配置差異。在Heroku上不顯示Django自定義命令

現在,當我把它在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%,如果我不是失去了一些東西明顯。

回答

2

我實際上能夠找到解決方案。 INSTALLED_APPS引用了本地應用程序,但出於某種原因,它並未按預期工作。

我的應用程序是:/名/應用程序的名字/和其在INSTALLED_APPS「name.appname」在當地設置工作正常。

然而,在Heroku上,我不得不在INSTALLED_APPS參考更改爲只是「應用程序名稱」和所有奇蹟般地開始工作。

1

您的主目錄需要位於您的Python路徑中。快速和不顯眼的方式來實現這一目標是將其添加到所述PYTHONPATH環境變量(其通常是Heroku的雪松堆棧上/應用)。

通過Heroku的配置命令添加:

$ heroku config:add PYTHONPATH=/app 

應該這樣做!有關詳細信息: http://tomatohater.com/2012/01/17/custom-django-management-commands-on-heroku/

+0

當我需要在Heroku運行manage.py命令我只鍵入'heroku上執行python manage.py殼」(或任何其他命令,遷移和這樣)。那麼這是什麼your_app/manage.py?遵循你的教程並沒有幫助我。 'your_app'是什麼意思? – Neara

+0

對不起,很晚回覆。這取決於你的manage.py所在的位置。如果你的不在子目錄中,那麼你不需要your_app部分。 – Tomatohater

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