使用自托管代理运行Python脚本的方案及pip安装网络问题解决
DevOps流水线搭建(VPN连接AzureML)及pip依赖安装问题解决
一、解决pip无法下载包的问题(企业防火墙场景)
针对你遇到的HTTPSConnectionPool错误,以下是几种可行的解决方式:
使用企业内部PyPI镜像源
在Windows自托管代理机器上创建或修改pip配置文件%APPDATA%\pip\pip.ini,添加企业内部镜像地址:[global] index-url = http://your-enterprise-pypi-mirror/simple trusted-host = your-enterprise-pypi-mirror如果镜像使用HTTPS,需确保代理机器信任镜像的SSL证书,必要时添加
cert参数指定证书路径。配置企业代理服务器
如果企业允许通过指定代理访问外部PyPI源,可在pip安装命令中直接指定代理:pip install --proxy http://proxy-ip:proxy-port -r requirements.txt也可在流水线步骤中提前设置环境变量(适用于所有后续命令):
set HTTP_PROXY=http://proxy-ip:proxy-port set HTTPS_PROXY=http://proxy-ip:proxy-port离线打包依赖包
在能正常联网的机器上提前下载所有依赖包:pip download -r requirements.txt -d ./local-packages将
local-packages文件夹与requirements.txt一同同步到自托管代理可访问的路径,执行离线安装:pip install --no-index --find-links=./local-packages -r requirements.txt注意:需确保打包机器与代理机器的Python版本、系统架构一致,避免兼容性问题。
二、VPN连接AzureML工作区的DevOps流水线常规实现方式
1. 自托管代理基础配置
- 确保Windows代理机器已通过企业VPN连接到Azure虚拟网络,能访问AzureML工作区的专用终结点。可在流水线中添加连通性检查步骤:
# 检查专用终结点IP连通性 ping <azureml-private-endpoint-ip> # 检查专用终结点FQDN的HTTPS访问 Invoke-WebRequest -Uri https://<azureml-private-endpoint-fqdn> -SkipCertificateCheck - 配置VPN自动连接:在Windows系统中设置VPN为开机自动连接,或在流水线启动前添加PowerShell脚本,检查VPN状态并自动重连。
2. 流水线核心步骤设计
- 步骤1:VPN连通性验证(可选但推荐)
执行上述PowerShell检查命令,确保代理机器能正常访问AzureML专用终结点,若失败则终止流水线并抛出告警。 - 步骤2:依赖包安装
使用上述解决pip问题的方法完成依赖安装,确保azureml-core等AzureML相关包正常安装。 - 步骤3:Python脚本执行
确保Python脚本中正确配置AzureML工作区访问:
注意:服务主体需拥有AzureML工作区的对应权限(如from azureml.core import Workspace from azureml.core.authentication import ServicePrincipalAuthentication # 使用服务主体认证(推荐流水线场景) auth = ServicePrincipalAuthentication( tenant_id="your-tenant-id", service_principal_id="your-sp-id", service_principal_password="your-sp-password" ) ws = Workspace( workspace_name="your-workspace-name", subscription_id="your-sub-id", resource_group="your-rg-name", auth=auth )Azure ML Data Scientist),且其流量需能通过VPN/虚拟网络访问专用终结点。
3. 权限与网络配置要点
- AzureML工作区的专用终结点需配置在与VPN连通的虚拟网络中,确保路由表正确转发代理机器的流量到专用终结点。
- 自托管代理机器需具备企业VPN的访问权限,避免出现连接中断或权限不足的问题。
内容的提问来源于stack exchange,提问作者billfcb
相关产品推荐
相关产品推荐

