即使存在 pip 包,如何重新安装它
Posted
技术标签:
【中文标题】即使存在 pip 包,如何重新安装它【英文标题】:How to reinstall a pip package even if it exists 【发布时间】:2019-04-03 14:11:42 【问题描述】:我想运行pip install -r requirements.txt
命令;
我想一遍又一遍地运行相同的命令;
问题是requirements.txt
会包含一些可能版本相同但源代码不同的wheel文件;
我想确保该软件包将被重新安装,即再次从我的自定义 pip 存储库中获取;
我知道this topic,但--ignore-installed
和--force-reinstall
之间的区别对我来说似乎不是很清楚;
我有例如somepack==1.1
,我更改了源代码,我希望在执行 pip install
时从我的仓库中再次获取 .whl
;
我应该使用哪一个?我应该将两者都合并吗?
它们有什么区别?
包可能有相同的版本,例如somepack==1.1
或它可能在某些时候有增量版本。例如somepack==1.2
我希望它始终(重新)安装;
编辑:这是 pip 的help
,至少在上述问题中我似乎不太清楚
--force-reinstall Reinstall all packages even if they are already up-to-date.
-I, --ignore-installed Ignore the installed packages (reinstalling instead).
【问题讨论】:
Difference between pip install options "ignore-installed" and "force-reinstall"的可能重复 见Removing pip's cache Removing pip's cache?的可能重复 【参考方案1】:你想要:
pip install -r requirements.txt --upgrade --force-reinstall
--force-reinstall
将删除现有的包,然后安装当前版本。
--ignore-installed
只会用当前版本覆盖现有版本,但不会删除在更新中删除的文件,这意味着您的库安装中可能存在不属于库的文件。
--upgrade
(在这种情况下为冗余),仅对那些有新版本的软件包进行强制重新安装。
【讨论】:
【参考方案2】:使用--force-reinstall
,首先卸载现有的包(和依赖项),而使用--ignore-installed
,则不会。
所以--force-reinstall
是首选,--ignore-installed
更像是一个紧急选择。
这是一个示例输出:
> pip install --force-reinstall ipdb
Collecting ipdb
Collecting ipython<6.0.0,>=5.0.0; python_version == "2.7" (from ipdb)
Using cached https://<...>/ipython-5.8.0-py2-none-any.whl
Collecting setuptools (from ipdb)
<...>
Installing collected packages: six, wcwidth, prompt-toolkit, decorator, setuptools, <...>
Found existing installation: six 1.11.0
Uninstalling six-1.11.0:
Successfully uninstalled six-1.11.0
Found existing installation: wcwidth 0.1.7
Uninstalling wcwidth-0.1.7:
Successfully uninstalled wcwidth-0.1.7
<...>
Successfully installed backports.shutil-get-terminal-size-1.0.0 colorama-0.4.0 <...>
> pip install --ignore-installed ipdb
Collecting ipdb
Collecting ipython<6.0.0,>=5.0.0; python_version == "2.7" (from ipdb)
<...>
Collecting setuptools (from ipdb)
<...>
Installing collected packages: six, wcwidth, prompt-toolkit, decorator, setuptools, <...>
Successfully installed <...>
【讨论】:
以上是关于即使存在 pip 包,如何重新安装它的主要内容,如果未能解决你的问题,请参考以下文章