即使存在 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 包,如何重新安装它的主要内容,如果未能解决你的问题,请参考以下文章

Manjaro中重新安装pip

如何在MacOS Sierra(10.x)上完全删除并重新安装PIP?

pip怎么安装

pip重新安装步骤

pip安装的模块无法导入

python如何安装pip库