跳转到主要内容

虚拟env命令执行器的简单封装,通过配置文件传递环境变量。

项目描述

虚拟env命令执行器的简单封装,通过配置文件传递环境变量。

用例

假设你部署了一个名为“example.com”的Django网站。你遵循所有最佳实践,并将其作为Python包部署,在/usr/share/python/example-com(类似于dh_virtualenv所做的那样)的隔离虚拟env中安装。

配置从Django设置中的环境变量读取。

当你想在服务器上运行Django管理命令时,你会输入

ENV_VAR_1=value ENV_VAR_2=other … /usr/share/python/example-com/bin/django-admin <command>

你可以使用envdir或bash的source命令来公开你的环境变量,但Env-cmd使这更加简单。它允许你通过在setup.py中添加setuptools入口点来读取配置文件、公开环境变量并运行命令。将入口点符号链接到/usr/bin,你的命令变为

example-com django-admin <command>

Env-cmd

  • 使用默认位置提供的配置文件或覆盖。

  • 将配置值作为环境变量公开。

  • 解析你的虚拟env的路径。

  • 将命令传递给虚拟env命令。

安装

pip install env-cmd

使用方法

<yourproject>/cli.py

import env_cmd

read_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

你可以使用以下命令从虚拟env中运行命令

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_reload钩子在服务器重新加载时读取配置,允许零停机配置更新

# gunicorn.conf.py
import os

from yourproject import read_environ

def on_reload(server):
    server.log.info("Reading environ")
    os.environ = read_environ()
    server.log.info(os.environ)

项目详情


下载文件

下载适用于您平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

env-cmd-1.1.tar.gz (4.1 kB 查看哈希值)

上传时间

构建分布

env_cmd-1.1-py2.py3-none-any.whl (3.1 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者