我閱讀了django doc和一些SO帖子,以瞭解manage.py和django-admin.py之間的區別。django manage.py如何在sys.path中放置一個工程包
他們都說:
manage.py在每個Django項目自動創建。 manage.py 是圍繞django-admin.py薄的包裝,需要照顧的兩件事情 你委託給django-admin.py前:
- 它把你的項目的包放在sys.path中。
- 它設置DJANGO_SETTINGS_MODULE環境變量,使其指向 您項目的settings.py文件。
所以我檢查了這2個文件的scource代碼(最新版本,因此它的文檔)。
然後我很困惑。 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()
[manage.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上的代碼?
我知道這是一個非常老的帖子,我們現在在Django 1.10中,但是基於上面的代碼,只有當用戶給出'--pythonpath'選項時纔會設置Python路徑。所以當沒有給出選項時,其他的東西必須設置Python路徑,這就是問題所在。 BTW。在Django 1.10中,它仍然是一樣的。 –