Python语言集成dotenvx
dotenvx-py还没有提交到PyPI(还在开发中),如果你使用uv的话,还是非常简单的。
在Python项目中使用dotenvx也非常简单,这里假设你已经使用uv创建了项目,
你只需要添加dotenvx-py
包即可,如下
$ uv add "dotenvx-py @ https://github.com/linux-china/dotenvx-py.git"
接下来只需要在代码调用load_dotenvx()
即可。
import os
from dotenvx_py import load_dotenv
load_dotenv() # take environment variables from .env.
print(os.getenv("HELLO"))
Tips: dotenvx-py使用python-dotenv
兼容的API,所以你只要调整一下import语句即可,
如from dotenv import load_dotenv
为 from dotenvx_py import load_dotenv
Dotenvx和Python虚拟环境集成
如果你不想在项目中增加dotenvx-py
包,还有一种就是通过虚拟环境集成。
现在不少项目都使用uv来管理Python项目,uv会创建一个虚拟环境,所有的包和Python版本都在该虚拟环境中,
当然虚拟环境的python解析器实际上是一个软连接,指向具体的Python版本目录下的解析器。
现在你只需要执行dotenvx link .venv/bin/python
,就会替换之前的软连接,创建一个wrapper脚本,
然后由该脚本负责加载.env
文件,然后再调用具体的Python解析器,这样就完成了集成。
#!/bin/bash
# load .env by dotenvx
eval $( dotenvx decrypt --stdout --format shell )
# Execute python3 command with arguments
$HOME/.local/share/uv/python/cpython-3.13.7-macos-x86_64-none/bin/python3.13 "$@"
该脚本和之前的软连接功能是一样的,你可以直接将该脚本理解为软连接即可,执行python demo.py
,和IDE集成等,完全没有任何问题。
这种Python 解析器内置.env集成的方式,Node.js、Bun等都内置啦,当然Python社区级的uv,其uv run
命令也内置了--env-file
参数,
这样就可以省去了dotenv package集成,更加方便。
说明
有同学可能问会,还有一个python-dotenvx项目,为何不使用它? 主要是python-dotenvx是基于命令行来实现对应的功能,你需要安装对应的命令行,而命令行也比较大。 你可以查看python-dotenvx, 而dotenvx-py则是直接使用Python代码实现的,主要是为了减少依赖和命令行的复杂性。