WSL与Docker环境下pip安装pkgs.dev.azure.com包遇SSL错误求助
解决WSL/Docker环境下Azure Artifacts私有包pip安装失败的问题
核心原因
Azure Artifacts会将包请求重定向到动态生成的*.blob.core.windows.net子域名,单个固定的--trusted-host无法覆盖所有情况;同时WSL/Docker环境的CA证书、pip全局配置或凭据管理可能与Windows原生环境存在差异。
永久解决方案
1. 全局配置pip信任通配符域名
创建或修改pip的配置文件,一次性解决动态域名信任问题:
- WSL环境:在用户目录下创建
~/.config/pip/pip.conf - Docker环境:可在镜像中创建
/etc/pip.conf或用户目录下的配置文件
配置内容如下:
[global] # 信任Azure Artifacts的主域名和所有blob子域名 trusted-host = pkgs.dev.azure.com *.blob.core.windows.net # 替换为你的私有源地址 index-url = https://pkgs.dev.azure.com/MY_ORG/[PROJECT]/_packaging/[FEED]/pypi/simple/
之后直接执行pip install package-name即可,无需每次添加额外参数。
2. 修复WSL/Docker的CA证书问题
部分Linux镜像或WSL发行版可能缺少必要的根CA证书,导致SSL连接失败:
- Ubuntu/Debian系:
sudo apt update && sudo apt install -y ca-certificates sudo update-ca-certificates - Docker镜像:将上述命令添加到Dockerfile中,确保构建镜像时完成证书配置。
3. 确保Artifacts凭据在非交互式环境生效
WSL/Docker通常为非交互式环境,需确保artifacts-keyring能获取到有效凭据:
- WSL环境:通过Azure CLI登录并缓存凭据:
az devops login --organization https://dev.azure.com/MY_ORG/ - Docker环境:通过环境变量传递Azure DevOps个人访问令牌(PAT):
注意:PAT需具备Packaging Read权限。# 在Dockerfile中添加 ENV AZURE_DEVOPS_EXT_PAT=your_personal_access_token_here RUN pip install artifacts-keyring
4. 应急排查方案(不推荐长期使用)
若上述方案暂时无法生效,可临时禁用SSL验证快速安装:
pip install package-name --index-url https://pkgs.dev.azure.com/MY_ORG/.../simple/ --trusted-host pkgs.dev.azure.com --trusted-host *.blob.core.windows.net --no-verify-ssl
内容的提问来源于stack exchange,提问作者Maxime Debarbat




