我的项目有base.py
,dev.py
和production.py
(非常自我解释)。
在我的电脑上,我只保留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
。有什么想法吗?或者你知道更好的方法吗?
答案 0 :(得分:1)
控制此问题的一种好方法是在要使用{shell}的shell中使用manage.py
环境变量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)
不应更改:
ImportError
至于PYTHONPATH
,
我不确定我们是否有足够的信息来调试它。
但基本上你需要确保文件可以从当前工作目录访问,
或来自manage.py
上的目录。
例如,如果您从项目的根运行project/settings/dev.py
,
并且(Student)-[:StudiesIn]->(Class)<-[:Teaches]-(Professor)
存在,然后是值&#34; project.settings.dev&#34;应该工作。