You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

UV Python 打包:如何在虚拟环境中设置环境变量

UV Python 打包:如何在虚拟环境中设置环境变量

嘿,我之前也踩过这个坑!直接修改activate_this.py确实起不了作用,因为UV的虚拟环境激活逻辑和传统virtualenv不一样,那个文件主要是给外部程序嵌入虚拟环境用的,根本不是用来配置环境变量的地方。给你分享几个实用的解决办法:

  • 利用激活脚本的自定义扩展文件
    这是最贴合UV虚拟环境激活流程的方法:

    • Windows系统:在.venv/Scripts目录下创建activate.bat.local(CMD用)或activate.ps1.local(PowerShell用)文件,把环境变量写进去。比如CMD里写set MY_PROJECT_VAR=my_custom_value,PowerShell里写$env:MY_PROJECT_VAR = "my_custom_value"
    • Linux/macOS系统:在.venv/bin目录下创建activate.local文件,添加export MY_PROJECT_VAR=my_custom_value
      每次激活虚拟环境时,这些.local文件里的配置会自动被加载,环境变量就生效了。
  • 临时会话级设置(单次生效)
    如果只是临时用一下某个环境变量,激活虚拟环境后直接在终端里输入命令就行:

    • Windows:set MY_TEMP_VAR=临时值
    • Linux/macOS:export MY_TEMP_VAR=临时值
      不过这种方式只在当前终端会话有效,关闭终端后变量就消失了。
  • 项目级.env文件(代码层面加载)
    要是想让环境变量和项目绑定,不管激活状态都能生效,可以在项目根目录创建.env文件,把变量按键值对写进去:

    DB_CONN=localhost:5432
    API_SECRET=xxx_12345
    

    然后用uv add python-dotenv安装依赖,在Python代码开头添加加载逻辑:

    import os
    from dotenv import load_dotenv
    
    load_dotenv()  # 加载.env文件里的变量
    db_conn = os.getenv("DB_CONN")
    

    这样不管是在虚拟环境里运行代码,还是用其他方式执行,都能读取到这些环境变量。

备注:内容来源于stack exchange,提问作者Michael Xia

火山引擎 最新活动