如何安装指定旧版本Python包?解决版本匹配报错问题
解决旧Python项目指定版本包安装失败的方案
针对Python3.5虚拟环境中安装matplotlib1.5.1、scipy0.19.0等旧版本包时出现的Error:could not find a version that satisfies a requirement问题,可尝试以下几种可行方式:
1. 降级pip至兼容旧包的版本
新版pip(20.x及以上)对旧PyPI索引的支持有限,先将pip降级到适配Python3.5的旧版本:
pip install pip==9.0.3
完成后再安装目标包:
pip install matplotlib==1.5.1 scipy==0.19.0
2. 手动下载历史版本包文件本地安装
找到对应包的历史版本资源,下载适配Python3.5的源码包(.tar.gz)或轮子文件(.whl),然后本地安装:
- 若下载的是源码包:
pip install ./matplotlib-1.5.1.tar.gz
- 若下载的是轮子文件(以Windows平台为例):
pip install ./matplotlib-1.5.1-cp35-none-win_amd64.whl
注意:源码包安装需提前配置编译环境,Windows需安装VC++ Build Tools,Linux需安装
gcc、python3.5-dev等依赖。
3. 使用conda安装(若可用Anaconda/Miniconda)
conda仓库通常会保留更多旧版本包,创建并激活Python3.5的conda环境后直接安装:
conda create -n py35_env python=3.5 conda activate py35_env conda install matplotlib=1.5.1 scipy=0.19.0
4. 从项目官方仓库的历史tag拉取源码编译安装
以matplotlib为例,找到对应版本的GitHub tag(如v1.5.1),克隆源码后编译安装:
git clone -b v1.5.1 https://github.com/matplotlib/matplotlib.git cd matplotlib python setup.py install
此方法需确保前置依赖(如numpy)的版本符合目标包要求,比如matplotlib1.5.1要求numpy>=1.6。
5. 先安装前置依赖的兼容版本
部分包安装失败是因为依赖的其他包版本不兼容,比如scipy0.19.0需匹配特定numpy版本,先安装兼容的前置依赖:
pip install numpy==1.11.3 pip install scipy==0.19.0
6. 用Docker模拟旧环境运行
若当前系统对Python3.5支持不佳,可使用Docker拉取Python3.5镜像,在容器内完成包安装和项目运行:
docker run -it --rm python:3.5 bash # 进入容器后执行pip降级和包安装命令
内容的提问来源于stack exchange,提问作者Vishak Raj
相关产品推荐
相关产品推荐

