是否可以强制 Python 库安装其依赖项之一的特定版本?
Is it possible to force a Python library to install a specific version of one of its dependency?
我想安装 scikit-learn==0.24.0 和 scipy==1.7.1,这是它的依赖项之一。
Scikit-learn 需要 scipy 的版本 >=0.19.1.
我有以下 requirements.txt :
scipy==1.7.1
scikit-learn==0.24.0
所以,
- 它下载 scipy 1.7.1
- 它下载 scikit-learn 0.24.0。
- 再次下载scipy 1.7.3版本
Python 版本:3.7
Pip 版本:18.1
我想 scipy 只在第一次下载。怎么做到的?
(使用答案框提供格式化代码。)适用于我:Debian Linux、Python 3.7、pip 21.3.1:
$ mktmpenv -p python3.7
(tmp-bf2774e21725ffd2) $ echo "scipy==1.7.1
> scikit-learn==0.24.0" > requirements.txt
(tmp-bf2774e21725ffd2) $ pip install -r requirements.txt
Collecting scipy==1.7.1
Downloading scipy-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl (28.5 MB)
|################################| 28.5 MB 12.0 MB/s
Collecting scikit-learn==0.24.0
Downloading scikit_learn-0.24.0-cp37-cp37m-manylinux2010_x86_64.whl (22.3 MB)
|################################| 22.3 MB 11.4 MB/s
Collecting numpy<1.23.0,>=1.16.5
Downloading numpy-1.21.5-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (15.7 MB)
|################################| 15.7 MB 14.5 MB/s
Collecting threadpoolctl>=2.0.0
Downloading threadpoolctl-3.0.0-py3-none-any.whl (14 kB)
Collecting joblib>=0.11
Downloading joblib-1.1.0-py2.py3-none-any.whl (306 kB)
|################################| 306 kB 11.2 MB/s
Installing collected packages: numpy, threadpoolctl, scipy, joblib, scikit-learn
Successfully installed joblib-1.1.0 numpy-1.21.5 scikit-learn-0.24.0 scipy-1.7.1 threadpoolctl-3.0.0
知道了。
这是由于 pip。
对于 pip 18.1,它不起作用。
使用 pip 21.3,它可以工作。
我升级了pip
我想安装 scikit-learn==0.24.0 和 scipy==1.7.1,这是它的依赖项之一。 Scikit-learn 需要 scipy 的版本 >=0.19.1.
我有以下 requirements.txt :
scipy==1.7.1
scikit-learn==0.24.0
所以,
- 它下载 scipy 1.7.1
- 它下载 scikit-learn 0.24.0。
- 再次下载scipy 1.7.3版本
Python 版本:3.7 Pip 版本:18.1
我想 scipy 只在第一次下载。怎么做到的?
(使用答案框提供格式化代码。)适用于我:Debian Linux、Python 3.7、pip 21.3.1:
$ mktmpenv -p python3.7
(tmp-bf2774e21725ffd2) $ echo "scipy==1.7.1
> scikit-learn==0.24.0" > requirements.txt
(tmp-bf2774e21725ffd2) $ pip install -r requirements.txt
Collecting scipy==1.7.1
Downloading scipy-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl (28.5 MB)
|################################| 28.5 MB 12.0 MB/s
Collecting scikit-learn==0.24.0
Downloading scikit_learn-0.24.0-cp37-cp37m-manylinux2010_x86_64.whl (22.3 MB)
|################################| 22.3 MB 11.4 MB/s
Collecting numpy<1.23.0,>=1.16.5
Downloading numpy-1.21.5-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (15.7 MB)
|################################| 15.7 MB 14.5 MB/s
Collecting threadpoolctl>=2.0.0
Downloading threadpoolctl-3.0.0-py3-none-any.whl (14 kB)
Collecting joblib>=0.11
Downloading joblib-1.1.0-py2.py3-none-any.whl (306 kB)
|################################| 306 kB 11.2 MB/s
Installing collected packages: numpy, threadpoolctl, scipy, joblib, scikit-learn
Successfully installed joblib-1.1.0 numpy-1.21.5 scikit-learn-0.24.0 scipy-1.7.1 threadpoolctl-3.0.0
知道了。
这是由于 pip。
对于 pip 18.1,它不起作用。 使用 pip 21.3,它可以工作。
我升级了pip