You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用UV添加Python包时STREAMLINK_USE_PYCOUNTRY环境变量不生效求助

在企业环境中用UV安装Streamlink并满足许可证要求的解决方案

问题背景

需要在企业环境中安装Streamlink 1.3.1,需满足两个许可证相关要求:

  • 用--no-binary选项构建Streamlink包
  • 通过环境变量STREAMLINK_USE_PYCOUNTRY=1强制使用pycountry依赖,避免引入GPL协议的iso-639/iso3166依赖

原pip命令可正常工作:

STREAMLINK_USE_PYCOUNTRY=1 pip install streamlink==1.3.1 --no-binary streamlink

但迁移到uv后,直接在命令前设置环境变量的方式无效,环境变量被忽略,导致安装了不符合要求的GPL依赖。

解决方法

uv为了保证环境隔离,默认不会将当前shell的环境变量传递给包构建过程,需要显式指定要传递的环境变量,以下是两种可行方案:

方案1:使用--env选项传递构建环境变量

无论是uv pip install还是uv add命令,都可以通过--env参数直接将环境变量注入到包的构建阶段:

用uv pip install的命令:

uv pip install streamlink==1.3.1 --no-binary streamlink --env STREAMLINK_USE_PYCOUNTRY=1

用uv add的命令:

uv add --group streamlink streamlink==1.3.1 --no-binary-package streamlink --env STREAMLINK_USE_PYCOUNTRY=1

方案2:通过--inherit-env继承当前shell环境变量

如果需要让uv继承当前shell的所有环境变量(或已导出的目标变量),可以添加--inherit-env选项:

先导出环境变量再执行命令:

export STREAMLINK_USE_PYCOUNTRY=1
uv pip install streamlink==1.3.1 --no-binary streamlink --inherit-env

单命令执行:

STREAMLINK_USE_PYCOUNTRY=1 uv pip install streamlink==1.3.1 --no-binary streamlink --inherit-env

原理说明

Streamlink的setup.py会在构建阶段读取STREAMLINK_USE_PYCOUNTRY环境变量,以此决定依赖包的选择。uv默认的环境隔离机制会屏蔽外部环境变量,因此必须通过--env或--inherit-env显式传递该变量,才能让Streamlink的构建逻辑正确触发,选择pycountry而非GPL协议的iso依赖。

内容的提问来源于stack exchange,提问作者Zul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:42:43