dotenv.pth¶
让 Python 启动时自动加载 .env 文件。安装后无需手动调用 load_dotenv()。
https://github.com/CNSeniorious000/dotenv.pth
Tip
解决开发环境变量加载的痛点。pip install 后,每次 python 启动都自动加载 .env。
功能¶
- 自动加载 .env 到 os.environ
- 支持 override 现有变量
- 仅开发依赖,生产环境不变
实现¶
一个 .pth 文件在 Python 启动时运行(通过 site-packages 的导入机制),load_dotenv_.pth 单行表达式会在解释器启动时导入并调用 _load_dotenv.py,后者使用 python-dotenv 的 load_dotenv(override=True) 将 .env 填入 os.environ。实现还支持通过 PYTHON_DOTENV_DISABLED 环境变量跳过加载逻辑,方便在生产环境选择不自动注入环境变量。
参考源码:src/load_dotenv_.pth(.pth 启动) · src/_load_dotenv.py(调用 python-dotenv 并执行 override 加载)
我的巧思¶
- 启动时加载:.pth 机制让它在代码前执行,完美全局。
- 开发友好:dev 依赖安装,prod 跳过。
- 扩展潜力:类似 monkey patch Windows 编码或 nest-asyncio。
相关项目¶
- python-dotenv:核心加载库。
- promplate/hmr:热重载,可搭配 .env 变化重载。
- coverage_pth:类似启动时启动 coverage。
试试:pip install dotenv.pth
深入洞见¶
这个项目巧妙利用了 Python 的 .pth 文件机制,在解释器启动早期自动加载环境变量,避免了手动调用 load_dotenv 的繁琐。通过单行条件导入和 override=True,确保开发便利而生产安全。相关地,类似 hmr 可以结合环境变化进行热重载。
参考源码:src/load_dotenv_.pth(条件导入) · src/_load_dotenv.py(override 加载)