python - 修改manage.py用于开发和生产

标签 python django deployment django-manage.py

我的项目有一个base.py、一个dev.py和一个product.py(非常不言自明)。

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

最佳答案

控制此问题的一个好方法是在要使用 manage.py 的 shell 中使用 DJANGO_SETTINGS_MODULE 环境变量。 默认的 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 存在,那么值“project.settings.dev”应该有效。

关于python - 修改manage.py用于开发和生产,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45196579/

相关文章:

python - Flask request.get_json() 返回字符串而不是 json

python - django 中的时间戳字段

django - 如何获取 wagtail/django 中某个类别内的项目数量?

tomcat - Grails 部署到 tomcat,只有一些链接有效

sharepoint - 在 sharepoint 2010 中为开发人员创建列表的最佳方法是什么?

python - 如何将 wxPython wx.html.HtmlWindow 滚动回到用户单击链接时的位置?

python - 如何检测 pytest 测试用例何时出现 AssertionError?

asp.net-mvc-3 - 如何将多项目解决方案部署到生产服务器

Python 被杀死(可能是内存泄漏)

python - 在 Django 1.10 中使用 allauth 进行身份验证,login_required 装饰器不起作用