You need to enable JavaScript to run this app. 2021年如何在Python 2.7环境安装pip并解决PyPI非SNI兼容问题
优惠活动
大模型
产品
解决方案
定价
更多

2021年如何在Python 2.7环境安装pip并解决PyPI非SNI兼容问题

可行解决方案

方案1:临时修复SNI支持(适合单用户临时使用)

  • 先安装系统层面的基础依赖:
apt-get update && apt-get install -y python-dev libssl-dev libffi-dev
  • 预先在可正常访问外网的设备上,下载好以下支持Python2.7的旧版本安装包,放入Docker构建上下文的本地目录:
    • 最后一个支持Python2.7的pip安装脚本get-pip.py(对应2.7分支版本)
    • pip 20.3.4安装包
    • urllib3、pyOpenSSL、ndg-httpsclient、pyasn1对应兼容Python2.7的版本包
  • 进入legacy环境后,本地离线安装pip:
python2 get-pip.py pip==20.3.4 --no-index --find-links=./本地包存放目录路径
  • 再离线安装urllib3的安全依赖补齐SNI支持:
pip install "urllib3[secure]" --no-index --find-links=./本地包存放目录路径
  • 完成上述配置后,环境已支持SNI,可正常访问公网PyPI安装其他依赖包

注意:不要升级系统自带的Python2.7.6版本,避免和生产环境运行版本不一致,出现兼容性问题

方案2:搭建内部私有PyPI源(适合团队长期维护legacy开发环境)

该方案稳定性更高,不会受公网PyPI规则变动影响,适合多人开发场景:

  • 在内网服务器部署devpi或pypiserver作为私有PyPI源,一次性同步所有legacy环境需要的Python包的指定版本
  • 在Ubuntu 14.04构建镜像的pip配置文件/etc/pip.conf中,默认指定内部私有源地址,所有包安装请求都走内网,不需要支持SNI即可正常拉取
  • 将所有依赖包的版本锁死在requirements.txt中,全部同步到私有源后,后续构建不需要再访问公网PyPI
  • 可将配置完成的基础镜像上传到内部镜像仓库,新开发者直接拉取镜像即可使用,不需要重复执行依赖安装流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 08:30:04