【发布时间】:2020-07-22 07:33:44
【问题描述】:
在 CentOS 7 系统上,我安装了多个 Python 版本,每个版本都有自己的 pip 版本:
# head -n1 /usr/local/bin/pip3.*
==> /usr/local/bin/pip3.6 <==
#!/usr/bin/python3
==> /usr/local/bin/pip3.7 <==
#!/usr/local/bin/python3.7
==> /usr/local/bin/pip3.8 <==
#!/usr/local/bin/python3.8
当我要求pip3.8 自行升级时,它会删除已安装的pip3.7:
# pip3.8 install --upgrade pip
Collecting pip
Using cached https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 19.2.3
Uninstalling pip-19.2.3:
Successfully uninstalled pip-19.2.3
Successfully installed pip-20.0.2
# head -n1 /usr/local/bin/pip3.*
==> /usr/local/bin/pip3.6 <==
#!/usr/bin/python3
==> /usr/local/bin/pip3.8 <==
#!/usr/local/bin/python3.8
为什么会这样,我该如何预防?
更新:
- 两个安装的 lib 路径不同,如下所示:
# python3.7 -c 'import sys; print(sys.path)'
['', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
# python3.8 -c 'import sys; print(sys.path)'
['', '/usr/local/lib/python38.zip', '/usr/local/lib/python3.8', '/usr/local/lib/python3.8/lib-dynload', '/usr/local/lib/python3.8/site-packages']
不是双向的 - 升级
pip3.7不会删除pip3.8。我相信 库 已正确升级并保留 3.7 版库,只是删除了 shell 包装脚本。这是
pip3.8升级后的内容:
# python3.7 -m pip --version
pip 20.0.2 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
# python3.8 -m pip --version
pip 20.0.2 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)
# pip3.7 --version
bash: pip3.7: command not found
# pip3.8 --version
pip 20.0.2 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)
执行
pip3.7 install --upgrade pip不会删除/usr/local/bin/pip3.6,因此它并不总是删除以前的版本。
1234563它在无论我使用
python3.8 -m pip install --upgrade pip还是pip3.8 install --upgrade pip升级都没有关系,它们最终都会删除/usr/local/bin/pip3.7包装脚本。
RUN pip3.7 install setuptools numpy pandas 行上失败,因为pip3.7 已丢失。
【问题讨论】:
-
您的 3.7 和 3.8 安装是否指向同一个包目录?
-
这是双向的,即升级
pip3.7删除pip3.8? -
@jordanm 和 norok2 - 谢谢,我已经在问题的更新中解决了这些问题。
-
你能安装 python 3.4 看看是否会被 pip3.7 升级删除吗?它可能正在删除早期版本的入口点。不确定这是否是预期的行为。
-
使用虚拟环境可能会有所帮助,因为只会更改打包的 pip。