python - django manage.py如何把一个项目包放到sys.path上

标签 python django

我读了 django doc和一些 SO 帖子以了解 manage.py 和 django-admin.py 之间的区别。

他们都说:

manage.py is automatically created in each Django project. manage.py is a thin wrapper around django-admin.py that takes care of two things for you before delegating to django-admin.py:

  1. It puts your project’s package on sys.path.
  2. It sets the DJANGO_SETTINGS_MODULE environment variable so that it points to your project’s settings.py file.

所以我检查了这两个文件的源代码(最新版本,所以它是文档)。

那我就糊涂了。 manage.py 做第二件事:设置 DJANGO_SETTINGS_MODULE 环境变量。除此之外,我真的找不到这两个脚本之间的任何区别。

[django-admin.py]

#!/usr/bin/env python
from django.core import management

if __name__ == "__main__":
    management.execute_from_command_line()

[管理.py]

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

为什么? django 文档是否过时?或者我在这里错过了什么?将项目的包放在 sys.path 上的代码在哪里?

最佳答案

sys.path 已更新 here使用位于 herehandle_default_options(options) 语句.执行路径如下:

  • execute_from_command_line(argv)(您的manage.py)
  • utility.execute() here
  • handle_default_options(选项) here

Command 类使用相同的方法用作管理命令的基类。

关于python - django manage.py如何把一个项目包放到sys.path上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19476996/

相关文章:

django - 如何生成时间戳作为 Django 管理字段中的默认值

python - 错误 : App 'polls' could not be found. 是否在 INSTALLED_APPS 中? *但是 polls 在 settings.py 的 INSTALLED_APPS 中。我

python - VS 代码和 Python 中自动化对象的自动完成

python - python中aws lambda函数的自动化测试

python - Matplotlib imshow 与 EPS

python - Django:如何翻译模型的字段

javascript - 如何用动态类型语言描述函数参数?

python - 如何用 Python 编写自己的 OrderedDict 类?

python - 将 static 一些静态文件位置从/static/file.js 更改为/file.js

python - 带有 extra() 的 Django 查询集