如何在Bazel构建中为pip指定--trusted-host参数
解决Bazel构建时PyPI SSL证书验证失败问题
方法一:在WORKSPACE中配置extra_pip_args传递信任主机参数
找到WORKSPACE里负责安装Python依赖的pip_install或pip_repository规则,添加extra_pip_args参数,把需要的--trusted-host参数以列表形式传入即可。
示例配置(pip_install场景)
pip_install( requirements = ":requirements.txt", extra_pip_args = [ "--trusted-host=pypi.org", "--trusted-host=files.pythonhosted.org", # 配套添加,因为PyPI包文件托管在此 ], )
示例配置(pip_repository场景)
如果项目用分阶段依赖管理,语法类似:
pip_repository( name = "pypi_deps", requirements = ":requirements.txt", extra_pip_args = [ "--trusted-host=pypi.org", "--trusted-host=files.pythonhosted.org", ], )
每个--trusted-host单独作为列表元素,Bazel会自动处理参数传递,不需要额外转义。
方法二:临时通过环境变量跳过验证(仅调试用)
如果只是临时调试,可以在执行Bazel命令前设置环境变量:
# Windows命令提示符 set PIP_TRUSTED_HOST=pypi.org;files.pythonhosted.org bazel build //...
# Windows PowerShell $env:PIP_TRUSTED_HOST="pypi.org;files.pythonhosted.org" bazel build //...
注意:这种方式会全局跳过对应主机的SSL验证,不建议生产环境使用。
方法三:导入企业根证书(生产环境推荐)
如果是企业内网自签名证书导致的问题,更安全的做法是把根证书加入Bazel使用的Python证书信任库:
- 从日志里找到Bazel使用的Python路径(比如
C:/users/<username>/bazel<username>/tiijebj4/external/python_x86_64-pc-windows-msvc/python.exe) - 定位该Python下的证书文件:通常在
Lib\site-packages\certifi\cacert.pem,或者Python安装目录的DLLs\certifi.pem - 将你的企业根证书内容追加到这个文件末尾
这样既能解决验证问题,又保留了安全的证书校验机制。
内容的提问来源于stack exchange,提问作者Kirill D
相关产品推荐
相关产品推荐

