首页 文章

django-admin.py找不到管理命令,但manage.py没有

提问于
浏览
0

我有一个名为“listen_rfid”和“listen_qr”的管理命令的Django项目 . 他们都出现了

./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运行它们 .

  • 我'm working in a virtualenv, but the django-admin.py command is the one installed within it, as evidenced by '哪个django-admin.py' .

什么可能是django-admin.py对manage.py采取不同行动的原因?

我在Ubuntu 12.04上使用Django 1.5.5

2 回答

  • 0

    根据文件

    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点可能存在问题 . 顺便说一下,我总是在django 1.5中使用 ./manage.py 完全没问题

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

  • 1

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

    django.core.management.find_management_module()通过查找模块的路径并直接检查文件来加载manage.py的自定义命令 . 当应用程序位于共享公共基本名称的包中但文件不在同一目录中时,这会失败,例如:app 1:company.division.project_a.app1存储在路径包/ company.subdivision.project_a.app1 app中2:存储在路径包/ company.subdivision.project_b.app2中的company.division.project_b.app2将找不到应用程序2中的自定义命令 .

相关问题