dotenvx和语言SDK集成,让.env加密特性使用更简单
· 2 min read
在做Dotenvx JetBrains IDE插件时,遇到一个Python和Dotenvx集成的问题,其实JetBrains IDE是支持该扩展的, 但是该API是内部的,并没有公开,导致插件兼容性的问题,所以审核比较麻烦,该特性一直都没有上线。
但是大家不用担心,还有一个简单的方式,就是通过调整Python SDK的命令行方式来集成Dotenvx。
假设你使用uv管理Python项目,你使用Python 3.13.7最新版本,uv会创建对应的virtualenv环境,
对应的python解析器为.venv/bin/python
,该命令行其实是软连接到具体的Python版本目录下的。
现在我们需要一个wrapper脚本来替换virtualenv下的python命令行,我们只需要删除.venv/bin/python
,
然后创建一个新的python
执行脚本,注意执行chmod u+x .venv/bin/python
,内容如下:
#!/bin/bash
# load .env by dotenvx
eval $( dotenvx decrypt --stdout --format shell )
# Execute python3 command with arguments
exec $HOME/.local/share/uv/python/cpython-3.13.7-macos-x86_64-none/bin/python3.13 "$@"
接下来我们就可以像平常一样执行python demo.py
,当然PyCharm、VS Code等IDE也可以正常工作,包括Debug等功能都不受影响。
借助同样的方式,你可以为lua
, php
, perl
等语言创建对应的wrapper脚本,如luaw
, phpw
, perlw
等,
这样在执行具体的语言的命令行解析器时,就会先调用dotenvx加载.env
文件,然后再执行具体的语言命令。
在产品部署环境中,你也可以创建对应的wrapper脚本,然后使用wrapper脚本启动应用程序。
如果你使用Docker的话,就更方便啦,在镜像打包的时候,直接copy对应的wrapper脚本镜像中,然后使用wrapper脚本启动应用程序。