修改manage.py以进行开发和生产

时间:2017-07-19 16:52:11

标签: python django deployment django-manage.py

我的项目有base.pydev.pyproduction.py(非常自我解释)。

在我的电脑上,我只保留dev.pybase.py,在服务器上我只保留production.pybase.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。有什么想法吗?或者你知道更好的方法吗?

1 个答案:

答案 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;应该工作。