【问题标题】:django-admin.py doesn't find management commands but manage.py doesdjango-admin.py 找不到管理命令,但 manage.py 可以
【发布时间】:2014-01-09 16:46:47
【问题描述】:

我有一个 Django 项目,其中包含名为“listen_rfid”和“listen_qr”的管理命令。他们都出现在

./manage.py help --settings=imagination.idmapper.config.settings_dev

但都没有出现在

django-admin.py help --settings=imagination.idmapper.config.settings_dev
  • 我对 django-admin.py 和 manage.py 的 diffsettings 的输出进行了比较,没有区别。
  • 我的应用在 INSTALLED_APPS 中正确列出。
  • DJANGO_SETTINGS_MODULE 在我的环境和 manage.py 中设置相同。
  • 我能够将我的管理命令作为 python 模块导入并从 django-admin.py shell 运行它们。
  • 我在 virtualenv 中工作,但 django-admin.py 命令是安装在其中的命令,正如“which django-admin.py”所证明的那样。

django-admin.py 与 manage.py 表现不同的任何可能原因是什么?

我在 Ubuntu 12.04 上使用 Django 1.5.5

【问题讨论】:

  • 只是为了确定,如果你这样做$ which django-admin.py,你会从你的 virtualenv 中得到一个,对吗?
  • 您的 PYTHONPATH 设置是否正确?试试export PYTHONPATH=/path/to/project
  • 我上面的评论是假设您使用的是 linux 顺便说一句,为此道歉。无论哪种方式,您都需要确保您的项目目录在 PYTHONPATH 上,manage.py 会自动执行但 django-admin.py 不会。
  • 是的,我的项目目录在 PYTHONPATH 上。 manage.py 似乎没有设置它,只有 DJANGO_SETTINGS_MODULE: pastebin.com/wXmNwamb

标签: python django django-manage.py manage.py


【解决方案1】:

根据文档

django-admin.py 是 Django 用于管理任务的命令行实用程序。本文档概述了它可以做的所有事情。

此外,在每个 Django 项目中都会自动创建 manage.py。 manage.py 是 django-admin.py 的一个瘦包装器,它在委托给 django-admin.py 之前为您处理两件事:

1) 它将您项目的包放在 sys.path 上。 2) 它设置 DJANGO_SETTINGS_MODULE 环境变量,使其指向您项目的 settings.py 文件。 3) 调用 django.setup() 来初始化 Django 的各种内部结构。

第 1 点或第 3 点可能有问题。顺便说一下,我一直使用 ./manage.py,在 django 1.5 中完全没有问题

https://docs.djangoproject.com/en/dev/ref/django-admin/

【讨论】:

  • 是的,我读到了,但我不确定它是否正确。 pastebin.com/wXmNwamb
  • @Flyte 你用的是什么版本的 django?
  • 我使用的是 django 1.5.5
【解决方案2】:

终于找到了这个问题的答案!这是django bug report的引述:

django.core.management.find_management_module() 加载自定义命令 通过查找模块的路径并检查文件来获取 manage.py 直接地。当应用程序位于共享一个公共的包中时,这会失败 基本名称,但文件不在同一目录中, 示例:

  • app 1:company.division.project_a.app1存放在路径packages/company.subdivision.project_a.app1
  • app 2:company.division.project_b.app2存放在路径packages/company.subdivision.project_b.app2中

将找不到应用 2 中的自定义命令。

【讨论】:

    猜你喜欢
    • 2012-01-05
    • 2012-08-01
    • 2011-02-10
    • 2013-11-20
    • 2012-04-21
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多