一个简单的包装器,用于执行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)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
junit cucumber为什么会找到“runTest.java”来运行测试?   在Eclipse中找不到java KeyPairGenerator   java NotSerializableException即使在实现Serializable之后   noclassdeffounderror(java字符串连接)为什么会出现这种异常?   java Guice:将接口绑定到由动态代理创建的实例   使用Spring数据neo4j创建空间索引时发生java错误   java对于需要在50多个excel文件上运行并且每个文件平均包含25k行的项目,最佳的方法是什么   javaNIO中的java缓冲区写入/发送消息问题   如何在Java/eclipse中添加不调用super()的警告   JavaSpring:mvcUrl映射错误的id   java应该在getInstance或构造函数中使用Init方法吗?   安卓中的java空指针异常错误   java Jsoup不能完全获取原始html代码