Heroku 上的 Django manage.py 自定义命令
Posted
技术标签:
【中文标题】Heroku 上的 Django manage.py 自定义命令【英文标题】:Django manage.py custom command on Heroku 【发布时间】:2013-10-05 21:55:38 【问题描述】:我正在尝试使用 Heroku 托管网站运行 cron 作业。我正在使用 Django 后端。我编写了一个在本地工作的自定义 manage.py 命令(status_crawl.py)。我看过一些关于如何解决这个问题的指南和帖子,但这些建议不起作用(例如Running Django custom manage.py task on Heroku - Importing Issues 和this guide)。
更奇怪的是它正在识别其他命令。 (我设法通过使用 django-extensions 框架中的 runscript 来完成基本任务)。不过,这仍然困扰着我。
我的基本文件结构如下:
likes:
...
management:
__init__.py
commands:
__init__.py
status_crawl.py
回溯是:
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line
utility.execute()
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 77, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
ImportError: No module named commands.status_crawl
另一个奇怪的事情是,当我运行“heroku run python manage.py help”时,该命令显示为一个选项。当我尝试使用 manage.py 命令自己运行脚本时,它只是没有运行。
谢谢!
【问题讨论】:
你在使用 Python 3 吗? 我使用的是 python 2.7。 【参考方案1】:可能它与您在 Heroku 上的 PYTHONPATH 变量有关。 Heroku 上的这个变量可能与您本地的 PYTHONPATH 不同。尝试从项目的根目录导入,例如:
from likes.management.commands import status_crawl
【讨论】:
以上是关于Heroku 上的 Django manage.py 自定义命令的主要内容,如果未能解决你的问题,请参考以下文章
RabbitMQ 上的 Heroku、Django 和 celery
Heroku 上的 webpack 和 django:collectstatic 之前的捆绑