一个简单的包装器,用于执行virtualenv命令并通过配置文件传递环境变量。
env-cmd的Python项目详细描述
一个简单的包装器,用于执行virtualenv命令并通过配置文件传递环境变量。
用例
假设您部署了一个名为“example.com”的django站点。你跟着所有人 最佳实践并将其部署为python包,安装在 孤立的virtualenv位于/usr/share/python/example-com(正如dh_virtualenv所做的那样)。
从django设置中的环境变量读取配置。
当您想在服务器上运行django管理命令时,您可以 类型:
ENV_VAR_1=value ENV_VAR_2=other … /usr/share/python/example-com/bin/django-admin <command>
你可以用envdir或bash's source命令公开环境变量,但是env cmd 更进一步。它允许您读取配置文件,在 只需添加setuptools入口点即可运行命令 在你的setup.py里。入口点符号链接到/usr/bin,则 命令变成:
example-com django-admin <command>
环境命令:
- 使用提供的默认位置读取配置文件,或 重写。
- 将配置值作为环境变量公开。
- 解析您的虚拟机的路径。
- 向virtualenv命令发出命令。
安装
pip install env-cmd
用法
在<yourproject>/cli.py:
importenv_cmdread_environ=env_cmd.read_environ('PRCONFIG',# name of the env var that allows overriding of the# config path.'/etc/yourproject.conf',# default config path.{'SOME_ENV_VARIABLE':'DEFAULT_VALUE',# Some default environment'OTHER_VARIABLE':'OTHER VALUE'},# variables.)main=env_cmd.main(read_environ)
在您的setup.py:
setup(…entry_points={'console_scripts':['yourproject=yourproject.cli:main']},)
然后符号链接/path/to/virtualenv/bin/yourproject到 /usr/bin/yourproject。
您可以使用以下命令从virtualenv运行命令:
yourproject <command>
使用以下命令覆盖默认配置路径:
PRCONFIG=/path/to/config.conf yourproject <command>
配置语法如下:
KEY=value OTHER=some other value QUOTED="quotes are stripped." ALSO='single quotes too' WHITESPACE= is stripped as well. # comments work like this # empty lines are skipped
如果使用Gunicorn运行web服务器,则可以 使用on_reloadhook在重新加载服务器时读取配置,允许 零停机配置更新:
# gunicorn.conf.pyimportosfromyourprojectimportread_environdefon_reload(server):server.log.info("Reading environ")os.environ=read_environ()server.log.info(os.environ)