daemontools的envdir的python端口。
envdir的Python项目详细描述
这是daemontools工具envdir的python端口。它可以在窗户上工作 其他可以运行python的系统。它经过了很好的测试,不需要 要安装的编译器。
envdir根据文件运行另一个修改了环境的程序 在指定的目录中。
例如,想象一个你想在服务器上运行但不想在服务器上运行的软件 希望在程序的源代码中嵌入某些配置变量 代码解决这个问题的一个常见模式是使用环境变量 将配置与代码分离。
envdir允许您一次设置一系列环境变量以简化 维护复杂的环境,例如您有多个集合 其中的配置变量取决于运行 在(例如Windows与Linux、登台与生产、旧系统与 新系统等)。
让我们看看典型的envdir:
$ tree envs/prod/ envs/prod/ ├── DJANGO_SETTINGS_MODULE ├── MYSITE_DEBUG ├── MYSITE_DEPLOY_DIR ├── MYSITE_SECRET_KEY └── PYTHONSTARTUP 0 directories, 3 files $ cat envs/prod/DJANGO_SETTINGS_MODULE mysite.settings $
如您所见,每个文件都有一个大写的名称,并且包含 运行程序时要设置的环境变量。使用它,很简单 在对程序的调用前面加上envdir:
$ envdir envs/prod/ python manage.py runserver
就这样,不多也不少。你构造envdir的方式 由您自己决定,但可以轻松满足您的配置要求 与其他配置系统集成。envdir只包含后面的文件 全部
关于为什么将配置值存储在 可以在12factor站点上找到环境变量。
注意
对于多行环境变量,此python端口的行为不同。 它不仅能读取文件的第一行,还能读取整个文件。采取 小心大文件!
变更日志
1.0.0(2018年3月26日)
- 删除python 2.6、3.2和3.3
- 添加对Python3.6的显式支持
- 添加对符号链接的支持
- 改进了对Windows的支持
0.7(2014年10月8日)
- 使用exec(os.execvpe)用子进程替换envdir进程 处理(修复20)。
- 将isenvvar()更改为只检查变量名中的=。
0.6.1(2013年12月23日)
- 修复了处理sigterm信号以确保forked的所有子级 进程也被终止。感谢Horst Gutmann的报告 帮助修理它。
0.6(2013年3月12日)
- 用pytest重写测试。
- 极大地扩展了python api。
- 添加了基于sphinx的文档:https://envdir.readthedocs.io/
- 修复了捕获键盘中断时杀死子进程的问题。
- 添加了基于PEPS 441和397的独立脚本,与 用于windows的python启动程序。有关更多信息,请参阅安装说明 信息。
0.5(2013年9月22日)
- 添加了检查提供的路径是否为目录,并在以下情况下引发错误 不是这为daemontools的envdir增加了兼容性。
- 确保将空值(\0)转换为换行符,就像在daemontools中那样 环境目录。
0.4.1(2013年8月21日)
0.4(2013年9月8日)
添加了envshell命令,该命令使用环境启动子shell 在给定的envdir中定义。示例:
$ envshell ~/mysite/envs/prod/ Launching envshell for /home/jezdez/mysite/envs/prod. Type 'exit' or 'Ctrl+D' to return. $ python manage.py runserver ..
0.3(2013年7月30日)
- 捕获KeyboardInterrupt异常以不显示envdir的回溯 但是被呼叫的司令部的代表。
- 允许多行环境变量。感谢霍斯特·古特曼 建议。这与Daemontools的标准有所不同 允许环境变量的第一行BLE文件。
0.2.1(2013年11月7日)
- 固定python -m envdir
- 扩展自述文件以更好地描述目的
0.2(2013年10月7日)
- 增加了从python使用envdir的能力。
0.1(2013年10月7日)
- 初次发布