Buildout配方,用于设置和获取环境变量。
项目描述
概述
此配方允许在执行buildout期间设置和获取环境变量。
该配方将当前环境变量映射到其部分,例如${environment:USER}将返回当前用户。
要设置环境变量,只需在部分中设置即可。
环境变量是在初始化Recipe实例期间设置和获取的,即在读取buildout.cfg之后但在安装或更新任何配方之前。
示例用法:使用环境变量
我们将首先创建一个使用该配方的buildout
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = environment print ... ... [some-section] ... some-option = ${environment:SOME_VARIABLE} ... ... [environment] ... recipe = collective.recipe.environment ... ... [print] ... recipe = mr.scripty ... install = ... ... print(self.buildout['some-section']['some-option']) ... ... return [] ... """)
使用mr.scripty配方打印出${some-section:some-option}选项的值。
现在我们设置环境变量
>>> import os >>> os.environ['SOME_VARIABLE'] = 'some_value'
运行buildout给我们
>>> run_buildout() START... some_value ...END
示例用法:设置环境变量
我们将首先创建一个使用该配方的buildout
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = environment print ... ... [some-section] ... some-option = value2 ... ... [environment] ... recipe = collective.recipe.environment ... var1 = value1 ... var2 = ${some-section:some-option} ... ... [print] ... recipe = mr.scripty ... install = ... ... import os ... ... for var in ('var1', 'var2'): ... ... print('%s = %s' % (var, os.environ[var])) ... ... return [] ... """)
使用mr.scripty配方打印出环境变量的值。
运行buildout给我们
>>> run_buildout() START... var1 = value1 var2 = value2 ...END
类似配方
将环境变量镜像到配方部分的功能主要来自gocept.recipe.env。
回归测试:包含变量替换语法的值会破坏东西
问题:如果环境变量的值包含类似Buildout语法的变量替换内容,则会导致问题。我们通过使用两个美元符号来转义变量替换来解决这个问题。例如:${foo}变为$${foo}。
让我们看看它是否工作。
设置环境变量
>>> os.environ['PROBLEM_VAR_1'] = '${foo}' >>> os.environ['PROBLEM_VAR_2'] = '${foo:bar}' >>> os.environ['PROBLEM_VAR_3'] = 'Contains ${foo} and also ${foo:bar}.' >>> os.environ['LEGAL_VAR_1'] = '$foo' >>> os.environ['LEGAL_VAR_2'] = '{foo}'
使用这些变量编写buildout
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = environment print ... ... [some-section] ... option-1 = ${environment:PROBLEM_VAR_1} ... option-2 = ${environment:PROBLEM_VAR_2} ... option-3 = ${environment:PROBLEM_VAR_3} ... option-4 = ${environment:LEGAL_VAR_1} ... option-5 = ${environment:LEGAL_VAR_2} ... ... [environment] ... recipe = collective.recipe.environment ... ... [print] ... recipe = mr.scripty ... install = ... ... section = self.buildout['some-section'] ... ... for (k, v) in sorted(section.items()): ... ... print('{} = {}'.format(k, v)) ... ... return [] ... ... """)
运行buildout给我们
>>> run_buildout() START... option-1 = $${foo} option-2 = $${foo:bar} option-3 = Contains $${foo} and also $${foo:bar}. option-4 = $foo option-5 = {foo} ...END
变更日志
1.1.0 (2017-07-27)
新功能
修复Python 3兼容性代码。[cas–]
1.0.0 (2017-07-20)
重大更改
修复bug:包含变量替换语法的值会导致问题。这是一个重大更改,因为有问题的地方被转义了,例如,“${foo}”变为“$${foo}”。
0.2.0 (2012-08-21)
现在可以读取环境变量了。
0.1b1 (2011-08-18)
首次发布。
项目详情
关闭
collective.recipe.environment-1.1.0.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0776a68ebf4e10d879733a514b998a8540fa70083283913b02e6f6641027313f |
|
MD5 | 61b4f05e94c532c24e5aeda51ce073eb |
|
BLAKE2b-256 | e401c2b6bfe67636193c39c3decb8720aab526e5fb67c12a72e5d38a4eaae01b |