补丁操作系统环境在解释器启动时使用动态值
patch-env的Python项目详细描述
补丁-补丁操作系统环境在解释器启动时使用动态值
patch_env允许您更新Python的os.environ(系统环境 变量字典)在解释器生命周期的早期,使用输出 指定的命令。在
这意味着您可以向Python注入一组动态的环境变量 解释器不改变启动 解释器或用于启动它的命令行参数。集成 开发环境(ide)常常使 在这些配置元素中注入动态值,这样patch_env会有所帮助 在那里。在
工作原理
patch_env安装Python站点特定的配置钩子 <;https://docs.python.org/3/library/site.html>;这使得它很早就运行了 翻译程序启动时。当它运行时,如果PATCH_ENV_COMMAND 设置环境变量,其值作为shell命令执行,并且 该命令的输出用于更新os.environ。在
所以基本上,当你想让patch_env进行修补时,设置PATCH_ENV_COMMAND 一切都是为你准备的,当你不做的时候不要去做
命令的输出应该每行包含一个环境变量 格式KEY=value:
FOO=bar AWS_SESSION_TOKEN=FwoGZXIvY... HINT=values can have spaces and "special chars", but not newlines
示例:使用aws vault
PyCharm/IntelliJ IDEA调试你正在开发一个使用boto3的程序 <;https://github.com/boto/boto3>;访问Amazon Web Services(AWS)的库。 您的组织禁止在磁盘上存储未加密的访问密钥,因此您使用 aws保险库;https://github.com/99designs/aws vault>;安全地管理它们。 当您从命令行运行程序时,这非常有用,但是 要让IDE将aws-vault的输出输入到 启动Python解释器之前的环境。在
下面是如何使用patch_env和一个像PyCharm这样的IDE来注入 aws-vault的输出到正在调试的Python解释器中:
使用pip安装patch_env。在
在编辑PyCharm调试配置并设置PATCH_ENV_COMMAND 环境变量:
^{pr2}$根据配置文件会话的需要调整aws-vault命令行 重要的部分是让aws-vaultexecute 通过grep将其所有环境变量管道化的shell进程 仅选择AWS凭证变量。在
在
现在运行调试器。patch_env记录它从 命令位于DEBUG级别,因此可以在该级别配置Python日志记录 如果需要验证它们是否被正确解析,则为level。在
局限性
如果启动时aws-vault没有有效的凭据 调试时,它可能需要从标准输入中读取诸如MFA令牌之类的内容。 这将失败,因为patch_env没有向其提供任何输入 PATCH_ENV_COMMAND。在
作为一种解决方法,打开一个新的终端并为概要文件运行aws-vault exec 用于调试,请在那里输入凭据,然后重新启动 调试器。aws-vault将其会话令牌存储在系统的密钥库中,因此 在过期之前,aws-vault的其他实例都可以使用它们。在
- 项目
标签: