无法通过“pip install -I”降级Python包的版本

Jam*_*mes 6 python pip

为了临时解决兼容性问题,我尝试将 Python 包的版本arrow从 0.17.0 降级到 0.13.2。

在特定服务器上我无法安装,因为下面的命令调用安装 0.13.2 但最终安装回 0.17.0。如果删除虚拟环境,并生成一个新的虚拟环境并重新安装0.13.2,则可以正常工作。

我也在虚拟机上测试过,降级正常,没有这个症状。

我想知道为什么,任何意见都将受到高度赞赏。

(venv3.7) [user@host freeze]$ pip install -I arrow==0.13.2
Collecting arrow==0.13.2
  Using cached arrow-0.13.2-py2.py3-none-any.whl (37 kB)
Collecting python-dateutil
  Using cached python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
Collecting six>=1.5
  Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
Installing collected packages: six, python-dateutil, arrow
Successfully installed arrow-0.17.0 python-dateutil-2.8.1 six-1.15.0
(venv3.7) [user@host freeze]$
Run Code Online (Sandbox Code Playgroud)

Nik*_*nar 13

使用--force-reinstall而不是-I, --ignore-installed.

-I根据文档,可以破坏现有安装:

-I, --ignore-installed忽略已安装的软件包,覆盖它们。如果现有的软件包是不同的版本或者是使用不同的软件包管理器安装的,这可能会破坏您的系统!

如果您想安装比当前安装的版本更旧的版本,--force-reinsall则更合适:

--force-reinstall重新安装所有软件包,即使它们已经是最新的。

实际操作演示--force-reinstall

$ pip install arrow==0.17.0
Collecting arrow==0.17.0
<... snip ...>
Successfully installed arrow-0.17.0

$ pip install --force-reinstall arrow==0.13.2
Collecting arrow==0.13.2
<... snip ...>
Attempting uninstall: arrow
Found existing installation: arrow 0.17.0
Uninstalling arrow-0.17.0:
  Successfully uninstalled arrow-0.17.0
Successfully installed arrow-0.13.2 python-dateutil-2.8.1 six-1.15.0

$ pip freeze | grep arrow
arrow==0.13.2
Run Code Online (Sandbox Code Playgroud)