Python 为开发和生产修改manage.py
我的项目有一个Python 为开发和生产修改manage.py,python,django,deployment,django-manage.py,Python,Django,Deployment,Django Manage.py,我的项目有一个base.py、一个dev.py和一个production.py(非常简单) 在我的PC上,我只保留dev.py和base.py,在服务器上,我只保留production.py和base.py 虽然WSGI不是一个问题,但我发现自己在每次部署后都必须进入manage.py,以更改os.environ.setdefault()设置 我想改变这一点: from __future__ import absolute_import, unicode_literals import os
base.py
、一个dev.py
和一个production.py
(非常简单)
在我的PC上,我只保留dev.py
和base.py
,在服务器上,我只保留production.py
和base.py
虽然WSGI不是一个问题,但我发现自己在每次部署后都必须进入manage.py
,以更改os.environ.setdefault()
设置
我想改变这一点:
from __future__ import absolute_import, unicode_literals
import os
import sys
if __name__ == "__main__":
try:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings.dev") #or project.settings.production
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
为此:
from __future__ import absolute_import, unicode_literals
import os
import sys
if __name__ == "__main__":
try:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings.dev")
except:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings.production")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
但是,这仍然会引发一个
ImportError
。你知道为什么吗?或者您知道更好的方法吗?控制这种情况的一个好方法是在希望使用manage.py的shell中使用DJANGO\u SETTINGS\u模块
环境变量。
默认的manage.py
不必更改:
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
至于导入程序
,
我不确定我们是否有足够的信息来调试它。
但基本上,您需要确保文件可以从当前工作目录访问,
或者从PYTHONPATH
上的目录。
例如,如果从项目的根目录运行manage.py
,
并且project/settings/dev.py
存在,那么值“project.settings.dev”应该起作用