【发布时间】:2019-04-18 10:19:36
【问题描述】:
Django 从来没有想出一个标准的方式来处理配置。 Django默认将其放入项目目录中的settings.py,这不是很实用,因为您不想覆盖/usr/lib/python3/{site,dist}-packages/someproject/中的文件来配置您的项目。此外,该文件将在软件包升级后消失。
我想以一种至少可以在 linux 上使用 sdist、bdist wheel 和 bdist deb 的方式打包 django 项目,并包含/创建从 /usr/lib/python3/{site,dist}-packages/someproject/settings.py 到 /etc/someproject/settings.py 的符号链接。这似乎是一个不可能的壮举。
替代方法是执行/etc/ 中的设置,感觉有点脏。
【问题讨论】:
-
由于符号链接将在
/etc/...中创建,这意味着需要以root进行安装。对吗? -
没有链接会指向到 /etc/。因此不需要root。
-
我不会去那里。记录您的项目可能尝试从中加载配置的标准位置,允许将您的项目配置为使用命令行开关、环境变量或从导入项目的 Python 代码查看其他位置,就是这样。请勿在标准
setuptools位置之外更改系统,因为并非所有安装都会遵循您在此处设想的模式。 -
例如,
/etc/someproject要求项目在系统范围内安装。当您强制该位置时,使用该项目的人无法决定划分设置并运行多个副本。 -
我有点同意要求配置在 /etc/someproject/ 中并不是很好,尽管我认为对于某些项目来说这是一个不错的折衷。
标签: python django configuration setuptools configuration-management