补丁操作系统环境在解释器启动时使用动态值

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解释器中:

  1. 使用pip安装patch_env。在

  2. 编辑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的其他实例都可以使用它们。在

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

推荐PyPI第三方库


热门话题
java初学者Swing递归   java将hashmap转换为JSON字符串   cURL和java字符串变量出错   java为什么不将其视为多重继承,而所有类都首先从对象类扩展,然后再扩展其他类   java如何在eclipse中添加插件依赖项   使用java从Ms word表中提取图片   java实现可比较的接口   验证生成的事务时发生java错误。木栓   java@OneToMany和不同的主键   java Jaxb2在相对路径上找不到xsd架构   java客户端C++服务器数据发送/接收问题   javajaxws-webservice。改变节点结构   java如何将带有特殊字符的字符串转换为另一个转义字符串   netbeans如何链接JGraph传感器和Java邮件?   java如何在单个tomcat中检查每个web应用程序的内存大小?   客户端图形QLJava类生成器