0

我有一个 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

4

2 回答 2

2

根据文档

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/

于 2014-01-09T17:07:00.667 回答
0

终于找到了这个问题的答案!这是django 错误报告的引述:

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 中的自定义命令。

于 2014-09-22T09:38:58.340 回答