点安装选项“忽略安装”和“强制重新安装”之间的区别

点安装选项“忽略安装”和“强制重新安装”之间的区别,第1张

安装选项“忽略安装”和“强制重新安装”之间的区别
--force-reinstall

在安装软件包之前,请先将其卸载(如果已安装)。与运行

pip uninstall -y dep && pip installdep
包及其每个依赖项几乎相同。

--ignore-installed

忽略软件包及其Dep是否已经安装,覆盖已安装的文件。这意味着您可能会遇到以下情况:

--ignore-installed
不卸载文件而将其
site-packages
永久保留。想象一下,您
pkgname==1.0
提供了以下模块
spam

$ pip show -f pkgnameName: pkgnameVersion: 1.0...spam.py

并将下一个版本

pkgname==2.0
重命名
spam
eggs
。运行时
pip install pkgname==2.0 --ignore-installed
spam.py
将不会删除它,除非您手动将其删除,否则它将永远变成孤儿。

后果

--force-reinstall
应该始终是首选;
--ignore-installed
仅当您 知道自己在做什么
时才使用,请确保重新安装将覆盖当前安装的文件。否则,由于中仍然存在过时的模块,因此重新安装后可能会导致模糊的导入错误
sys.path

重现最新

pip
更改的示例,其中所有软件包均移至软件包下
_internal
:创建一个新的虚拟环境并降级
pip
至版本9:

$ mkvirtualenv testenv$ workon testenv(testenv) $ pip install "pip<10"

如果您现在

pip
要通过升级到最新版本
--force-reinstall
,请执行全新升级。然后,你必须用正确的封装结构
_internal
_vendor

(testenv) $ pip install pip --upgrade --force-reinstall(testenv) $ ls -l $VIRTUAL_ENV/lib/python3.7/site-packages/piptotal 16-rw-r--r--   1 hoefling  staff   21 19 Aug 11:47 __init__.py-rw-r--r--   1 hoefling  staff  623 19 Aug 11:47 __main__.pydrwxr-xr-x   4 hoefling  staff  128 19 Aug 11:47 __pycache__drwxr-xr-x  25 hoefling  staff  800 19 Aug 11:47 _internaldrwxr-xr-x  26 hoefling  staff  832 19 Aug 11:47 _vendor

如果要使用以下方法升级

--ignore-installed

(testenv) $ pip install pip --upgrade --ignore-installed(testenv) $ ls -l $VIRTUAL_ENV/lib/python3.7/site-packages/piptotal 392-rw-r--r--   1 hoefling  staff     21 19 Aug 12:33 __init__.py-rw-r--r--   1 hoefling  staff    623 19 Aug 12:33 __main__.pydrwxr-xr-x  14 hoefling  staff    448 19 Aug 12:33 __pycache__drwxr-xr-x  25 hoefling  staff    800 19 Aug 12:33 _internaldrwxr-xr-x  28 hoefling  staff    896 19 Aug 12:33 _vendor-rw-r--r--   1 hoefling  staff  11910 19 Aug 12:33 basecommand.py-rw-r--r--   1 hoefling  staff  10465 19 Aug 12:33 baseparser.py-rw-r--r--   1 hoefling  staff  16474 19 Aug 12:33 cmdoptions.pydrwxr-xr-x  16 hoefling  staff    512 19 Aug 12:33 commandsdrwxr-xr-x   5 hoefling  staff    160 19 Aug 12:33 compat-rw-r--r--   1 hoefling  staff  32153 19 Aug 12:33 download.py-rw-r--r--   1 hoefling  staff   8121 19 Aug 12:33 exceptions.py-rw-r--r--   1 hoefling  staff  39950 19 Aug 12:33 index.py-rw-r--r--   1 hoefling  staff   5626 19 Aug 12:33 locations.pydrwxr-xr-x   5 hoefling  staff    160 19 Aug 12:33 modelsdrwxr-xr-x   6 hoefling  staff    192 19 Aug 12:33 operations-rw-r--r--   1 hoefling  staff  10980 19 Aug 12:33 pep425tags.pydrwxr-xr-x   8 hoefling  staff    256 19 Aug 12:33 req-rw-r--r--   1 hoefling  staff    156 19 Aug 12:33 status_pres.pydrwxr-xr-x  16 hoefling  staff    512 19 Aug 12:33 utilsdrwxr-xr-x   8 hoefling  staff    256 19 Aug 12:33 vcs-rw-r--r--   1 hoefling  staff  32010 19 Aug 12:33 wheel.py

升级

pip
--ignore-installed
没有卸载以前的包版本第一,而且由于新的文件结构,新文件没有覆盖旧的。结果,旧文件现在变成孤立文件,不再被任何程序包拾取。甚至
pipuninstall pip
不会删除孤立的文件。人们将需要手动清理它们。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5666757.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存