Python 尝试部署时未找到Django设置

Python 尝试部署时未找到Django设置,python,django,divio,Python,Django,Divio,我的Django应用程序设置位于应用程序文件夹中的一个文件夹中,文件夹名为init.py,这在我当前的VPS服务器、Pycharm开发和Divio本地开发环境中都可以正常工作。但是,当我尝试将其部署到Divio staging时,我得到了“ModuleNotFoundError:没有名为“settings”的模块”。为什么会这样 Manage.py: #!/usr/bin/env python import os from aldryn_django import startup if __

我的Django应用程序设置位于应用程序文件夹中的一个文件夹中,文件夹名为init.py,这在我当前的VPS服务器、Pycharm开发和Divio本地开发环境中都可以正常工作。但是,当我尝试将其部署到Divio staging时,我得到了“ModuleNotFoundError:没有名为“settings”的模块”。为什么会这样

Manage.py:

#!/usr/bin/env python
import os
from aldryn_django import startup


if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings")
    startup.manage(path=os.path.dirname(os.path.abspath(__file__)))
没有设置.py文件

名为“设置”的文件夹,包含:

_初始值

from.dev_divio import*#或.dev(如果需要dev)
来自。普通进口*
已安装的插件=[
##警告:已安装的_插件标签内的文本是自动生成的。手动更改将被覆盖。
“aldryn addons”,
“aldryn django”,
“奥尔德林·索索”,
# 
]
导入aldryn_addons.settings
aldryn_addons.settings.load(locals())
#应用程序定义
已安装的应用程序。扩展([
#在此处添加特定于项目的应用程序
#“django.contrib.admin”,
#“django.contrib.auth”,
#“django.contrib.contenttypes”,
#“django.contrib.sessions”,
#“django.contrib.messages”,
#“django.contrib.staticfiles”,
#“django.contrib.sites”,
“rest_框架”,
“rest_framework.authtoken”,
“appname”,
])
哪些进口:

普通的.py dev_divio.py

上面的两个文件中都有配置。

您就快到了

Django如何在Divio项目中找到其设置 您对
manage.py
的更改允许Dockerfile执行
collectstatic

RUN DJANGO_MODE=build python manage.py collectstatic --noinput
以正确查找设置。实际上,您将
DJANGO\u SETTINGS\u模块
环境变量硬编码到
manage.py

这将允许任何
manage.py
命令查找设置,以便(如您所发现的)能够在本地运行站点

但是,其他命令也需要知道设置的位置,例如在云部署中使用的
start-web
命令,或者在本地(如果需要)

这些命令依赖于正确设置的
DJANGO\u SETTINGS\u模块
环境变量,可以在
.env local
中进行本地设置,也可以使用控制面板中的环境变量视图对云服务器进行本地设置

但是,以这种方式设置的环境变量只有在从已构建的映像启动容器时才可用。它们对于Dockerfile中的
collectstatic
命令不可用,因为在此阶段正在生成映像

必须两次提供相同的信息是不雅观的,尤其是在Python模块中硬编码环境变量

最佳解决方案 事实上,你不需要做这两件事。不要修改
manage.py
并为每个环境自定义环境变量,而是添加:

ENV DJANGO_SETTINGS_MODULE=app.settings
到Dockerfile(在执行任何Django命令之前)

这将使该变量立即可用,并将其烘焙到图像中,以便从中创建的每个容器在默认情况下都包含该变量


以这种方式设置的变量仍然可以在每个环境的基础上重写

你能发布你的设置吗?你试过联系Divio的支持吗?当你在本地环境和云环境中得到不同的结果时,一个非常有用的调试步骤是。这有助于消除它们之间的一些差异。在实时配置中是否看到相同的错误?已在上面的安装程序中发布了更多信息。simpris文件夹中是否有设置文件?非常感谢。我按照你的建议做了,它部署成功了。谢谢你让我知道。请将问题标记为已回答,因为这也会帮助其他人。
ENV DJANGO_SETTINGS_MODULE=app.settings