在Heroku上运行Django自定义manage.py任务 - 导入问题

ktu*_*ner 5 python django heroku django-settings manage.py

我正在尝试将自定义django命令作为Heroku上的计划任务运行.我能够通过在本地执行自定义命令:python manage.py send_daily_email.(注意:我对自定义管理命令本身没有任何问题)

但是,当尝试通过Heroku Scheduler插件"运行"任务时,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
Run Code Online (Sandbox Code Playgroud)

我在/bin/send_daily_email.py中放了一个python脚本,它是以下内容:

#! /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
Run Code Online (Sandbox Code Playgroud)

在Heroku的,但是,我能运行heroku run bin/python-启动蟒蛇壳-并成功导入settingsdjango.conf

我很确定它与我PYTHON_PATH或Django的可见性有关SETTINGS_MODULE,但我不确定如何解决这个问题.有人能指出我正确的方向吗?有没有更简单的方法来完成我在这里尝试做的事情?

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

编辑:

根据Per Nix的评论,我做了一些调整,并确实发现指定我的确切python路径,我确实通过了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'
Run Code Online (Sandbox Code Playgroud)

虽然,当我运行``heroku run bin/python app/manage.py```时,我可以看到'send_daily_email'.

如果我遇到答案,我会保留更新.

Nix*_*Nix 4

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

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


键入which python将告诉您在您的路径上找到了哪个解释器。