Python2.6环境下无法使用PIP安装/更新任何软件包
Python 2.6 下 pip 安装包遇 SSL 错误的解决办法(不升级Python)
先明确下你的环境:
- Python版本:Python 2.6.9
- PIP版本:pip 8.1.2 from /usr/lib64/python2.6/site-packages (python 2.6)
你不想升级Python,只想正常安装包,但运行pip install <some package>(比如ndg-httpsclient)时遇到了SNI警告和SSL协议版本错误,确实是因为Python2.6太老了——现代PyPI已经不再支持它默认的低版本TLS协议,而且它的SSL模块也不支持SNI扩展。下面给你几个实测有效的解决步骤:
一、手动安装适配Python2.6的SSL依赖包
因为直接用pip装ndg-httpsclient这类包会失败,我们得手动下载支持Python2.6的旧版本:
- 先下载三个关键包的归档文件(都是最后支持Python2.6的版本):
wget https://files.pythonhosted.org/packages/source/p/pyasn1/pyasn1-0.4.8.tar.gz wget https://files.pythonhosted.org/packages/source/p/pyOpenSSL/pyOpenSSL-0.15.1.tar.gz wget https://files.pythonhosted.org/packages/source/n/ndg-httpsclient/ndg-httpsclient-0.4.4.tar.gz
- 依次解压并安装:
# 安装pyasn1 tar xzf pyasn1-0.4.8.tar.gz cd pyasn1-0.4.8 python setup.py install cd .. # 安装pyOpenSSL tar xzf pyOpenSSL-0.15.1.tar.gz cd pyOpenSSL-0.15.1 python setup.py install cd .. # 安装ndg-httpsclient tar xzf ndg-httpsclient-0.4.4.tar.gz cd ndg-httpsclient-0.4.4 python setup.py install cd ..
二、强制pip使用TLSv1.0协议
安装完依赖后,可能还会遇到SSL协议版本不匹配的问题,这时候可以强制pip使用TLSv1.0(Python2.6支持的最高TLS版本):
临时使用(单次安装)
执行pip命令时加上参数:
pip install <你的包名> --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --ssl-version TLSv1
永久配置(一劳永逸)
创建或修改pip配置文件~/.pip/pip.conf,添加以下内容:
[global] trusted-host = pypi.python.org files.pythonhosted.org ssl-version = TLSv1
三、备选方案:使用国内HTTP镜像源
如果上面的方法还是不行,试试国内的HTTP镜像源(避免HTTPS的SSL验证问题),比如阿里云镜像:
pip install <你的包名> -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
需要注意的是,这些都是适配旧版本的临时方案,毕竟Python2.6已经停止维护很多年了,后续可能还会遇到其他包无法安装的情况,但如果必须保留Python2.6,这些方法应该能解决当前的SSL问题。
内容的提问来源于stack exchange,提问作者Ankur Choraywal
相关产品推荐
相关产品推荐

