2011-12-05 63 views
5

我试图将自定义django命令作为Heroku上的计划任务运行。我可以通过以下方式在本地执行自定义命令:python manage.py send_daily_email。 (注:我没有与自定义管理命令本身的任何问题)在Heroku上运行Django自定义manage.py任务 - 导入问题

然而,Heroku的试图“运行”通过Heroku的调度程序插件任务的时候给了我以下异常:

Traceback (most recent call last): 
    File "bin/send_daily_visit_email.py", line 2, in <module> 
    from django.conf import settings 
ImportError: No module named django.conf 

我放在一个python脚本在/bin/send_daily_email.py,它是:

#! /usr/bin/python 
from django.conf import settings 
settings.configure() 
from django.core import management 

management.call_command('send_daily_email') #delegates off to custom command 

在Heroku的,但是,我能够运行heroku run bin/python - 推出蟒蛇壳 - 和成功全面导入settingsdjango.conf

我敢肯定它是与我的PYTHON_PATH或能见度Django的SETTINGS_MODULE,但我不知道该如何解决这个问题。有人能指出我正确的方向吗?有没有更简单的方法来完成我在这里要做的事情?

非常感谢您的提示和建议提前! Heroku新手! :)

编辑:

每尼克斯的评论,我做了一些调整,并没有发现,我指定确切的蟒蛇路径,我没有得到过Django的设置。

我现在得到:

File "/app/lib/python2.7/site-packages/django/core/management/__init__.py", line 155, in call_command 
    raise CommandError("Unknown command: %r" % name) 
django.core.management.base.CommandError: Unknown command: 'send_daily_email' 

虽然,我可以看到 'send_daily_email' 当我运行``Heroku的运行斌/ Python应用程序/ manage.py```。

如果我遇到问题的答案,我会保留更新。

回答

3

您可能正在使用不同的解释器。

检查以确保shell python与脚本/ usr/bin/python中引用的shell相同。这可能是因为您的路径中存在不同的路径,这可以解释为什么它在您运行python manage.py时运行,而不是您明确引用/usr/bin/python的shell脚本。


打字which python会告诉你在你的路径上找到了什么解释器。

+0

哇。你是对的。当我调用'''heroku run bin/python bin/send_daily_email.py'''(vs.'''heroku run bin/send_daily_email.py)。我会修改我的答案,并显示我目前的回应,看看你是否可以帮助:)但我会说,所以你已经回答了这个问题。 – kturner