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

时间:2014-01-09 16:46:47

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

我有一个名为“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运行它们。
  • 我正在使用virtualenv,但django-admin.py命令是安装在其中的命令,由'which django-admin.py'证明。

django-admin.py对manage.py的行为可能有什么原因?

我在Ubuntu 12.04上使用Django 1.5.5

2 个答案:

答案 0 :(得分: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点可能存在问题。顺便说一句,我总是在django 1.5中使用./manage.py完全没问题

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

答案 1 :(得分:0)

终于找到了这个问题的答案!以下是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.division.project_b.app2存储在路径包/ company.subdivision.project_b.app2
  • 中   
     

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