用于更新环境的源env.bash脚本

envbash的Python项目详细描述


PyPIBuild StatusCoverage ReportPython Versions

用于获取bash脚本以增强环境的python模块。 支持Python2.7和3.4+

基本原理

12-factor apps需要configuration loaded from the environment

那是easy on a platform like Heroku,在那里 环境是由用户使用如下命令预设的 heroku config:set。但它在发展和非英雄方面更混乱 部署,其中可能需要从文件加载环境。

此包提供了一种机制,用于获取要更新的bash脚本 python的环境(os.environ)。通常外部文件被称为 env.bash,因此该项目的名称。

安装

PyPI:安装

pip install envbash

用法

调用load_envbash将bash脚本导入当前python进程。 脚本中设置的任何变量,无论它们是否 显式导出,将添加到流程环境中。

例如,给定具有以下内容的env.bash

FOO='bar baz qux'

这可以加载到python中:

importosfromenvbashimportload_envbashload_envbash('env.bash')print(os.environ['FOO'])#=> bar baz qux

常见问题解答

这和dotenv有何不同?

两个项目的目标都是解决同一个问题,但方法不同。在 特别是,dotenv使用特殊的配置语法,而envbash使用 猛击。

dotenv的语法成为多行字符串的问题。Dotenv打算 shell可读的.env文件,但是 多行字符串与shell不兼容。

如果关键是要有一个非常适合的配置语言 环境变量,很难打败纯bash,而且它是有保证的 正确地进入外壳。

我应该向源代码管理提交env.bash吗?

不,绝对不是。env.bash的目的是存储开发 不适合提交到存储库的配置, 无论是密钥还是特定于开发人员的自定义项。在 事实上,您应该将以下行添加到.gitignore

/env.bash

有必要在env.bash中显式地export变量吗?

不,envbash前缀使用set -a来获取您的env.bash,其中 使所有新设置的变量自动导出。如果你 如果希望显式导出变量,可以在顶部set +a。 你的env.bash的。

如何将多行字符串放入env.bash

在bash中,可以将换行符直接放入多行字符串中,因此 示例此操作有效:

PRIVATE_KEY="
-----BEGIN RSA PRIVATE KEY-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END RSA PRIVATE KEY-----"

envbash是否覆盖我的环境设置?

默认情况下,您的本地环境设置将获胜,因此您可以覆盖 通过在shell中显式导出变量,env.bash的内容。

你可以改变这种行为。这对于部署的实例来说是有意义的 从env.bash获取完整配置并需要保护的 从呼叫环境。

load_envbash('env.bash',override=True)

我可以从环境中删除设置吗?

默认情况下,envbash不删除设置,但您可以更改此设置 行为。

load_envbash('env.bash',remove=True)

这将导致您显式地unsetin env.bash也将从python的os.environ中删除。

如何将env.bash源代码导入到来宾shell环境中?

假设源目录在默认情况下可用 /vagrantmount point在来宾中,您可以在 /home/vagrant/.bash_profile底部:

set -a; source /vagrant/env.bash; set +a

注意,这意味着设置加载在vagrant ssh上,因此 需要退出shell并重新运行^ {TT25}$以刷新 更改设置。

鲁比呢?

envbash-ruby

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

推荐PyPI第三方库


热门话题
使用odbc的java数据库连接:找不到microsoft access驱动程序(*.mdb*.accdb)选项   java我在将文本读入数组时遇到问题,我需要在这段代码中更改什么?   java JAXB元素列表中缺少字段   java Android BaseAdapter,返回项id   登录到web应用程序的java语音识别   java线性布局不填充滚动视图中屏幕的剩余部分   java如何通过点击第二个按钮来显示第二张壁纸?   java如果使用无缓冲I/O,缓冲I/O如何减少开销?   《骑士之旅》中的java问题   java如何解决Singelton为空的问题   java可在后台播放广告   在Swing中处理JFXPanel时发生java JavaFX非法状态异常   java Contains总是返回false   java ZeroMQ两个PUBSUB代理