pip 使用了错误的缓存包版本,而不是用户指定的版本

2025-02-14 09:50:00
admin
原创
52
摘要:问题描述:我需要专门安装 psycopg2 v2.4.1。我不小心安装:pip install psycopg2 而不是:pip install psycopg2==2.4.1 这将安装 2.4.4 版本,而不是早期版本。现在,即使在我使用 pip 卸载 psycopg2 并尝试使用正确的版本重新安装后,pi...

问题描述:

我需要专门安装 psycopg2 v2.4.1。我不小心安装:

pip install psycopg2

而不是:

pip install psycopg2==2.4.1

这将安装 2.4.4 版本,而不是早期版本。

现在,即使在我使用 pip 卸载 psycopg2 并尝试使用正确的版本重新安装后,pip 似乎仍在重新使用它第一次下载的缓存。

我如何强制 pip 清除其下载缓存并使用我在命令中包含的特定版本?


解决方案 1:

如果使用 pip 6.0 或更新版本,请尝试添加--no-cache-dir选项(source)。

如果使用 pip 6.0 之前的版本,请使用 进行升级pip install -U pip

解决方案 2:

清除适合您系统的缓存目录

Linux 和 Unix

~/.cache/pip  # and it respects the XDG_CACHE_HOME directory.

操作系统

~/Library/Caches/pip

视窗

%LocalAppData%pipCache

更新

使用 pip20.1或更高版本,您可以通过在命令行中输入以下内容轻松找到操作系统的完整路径:

pip cache dir

我的 Ubuntu 安装上的示例输出:

➜ pip3 cache dir
/home/tawanda/.cache/pip

解决方案 3:

使用 pip 20.1 或更高版本,您可以使用pip cache命令:

  • pip cache remove matplotlib:从 pip 的缓存中删除所有与 matplotlib 相关的 wheel 文件。

  • pip cache purge:从 pip 的缓存中清除所有 wheel 文件。

  • pip cache dir:获取缓存的位置。

如果您由于某种原因不想使用 pip 缓存(根据官方文档,这是一个坏主意),您的选择是:

  • pip install --no-cache-dir <package>:仅针对本次运行,安装一个不使用缓存的包。

  • pip config set global.no-cache-dir false:配置 pip 不“全局”使用缓存(在所有命令中)。


围绕这个问题的一些历史(戴上 pip 维护者的帽子)

问题中提到的“由于缓存而安装错误版本”的具体问题已在 2013 年的 pip 1.4 中修复!)

修复与清理和不重用构建目录相关的许多问题。(#413、#709、#634、#602、#939、#865、#948)

自 pip 6.0(2014 年!)以来,可以通过选项指示pip installpip downloadpip wheel命令避免使用缓存--no-cache-dir。(例如pip install --no-cache-dir <package>

当时,是的,通过--no-cache-dir是避免此错误的唯一选择。所以......这成为“pip cache remove”的顶级搜索结果,这有点不幸。:)

从 pip 10.0(2018 年!)开始,pip config添加了一个命令,可用于将 pip 配置为始终忽略缓存。这始终可以通过手动编辑相关文件来实现,但这将这种能力展现在命令行上。有关 pip 配置机制的详细信息,请参见此处。

从 pip 20.1 开始,pip 有一个pip cache命令来管理 pip 缓存的内容。

解决方案 4:

来自https://pip.pypa.io/en/latest/reference/pip_install.html#caching的文档:

从 v6.0 开始,pip 提供默认开启的缓存,其功能类似于 Web 浏览器的缓存。虽然缓存默认开启,并且默认情况下会执行正确的操作,但您可以利用该--no-cache-dir
选项禁用缓存并始终访问 PyPI。

解决方案 5:

pip 可以忽略缓存来安装包,就像这样

pip --no-cache-dir install scipy

解决方案 6:

自2020 年 4 月 21 日发布的pip 20.1b1 以来pip cache,“添加了用于检查/管理 pip 的 wheel 缓存的命令”,可以发出此命令:

pip cache purge

参考指南在这里:

https://pip.pypa.io/en/stable/reference/pip_cache/

相应的拉取请求在这里。

解决方案 7:

在 Ubuntu 上,我必须删除/tmp/pip-build-root

解决方案 8:

如果您喜欢--no-cache-dir默认设置选项,您可以将其放入pip.conf中:

[global]
no-cache-dir = false

注 1:这很令人困惑,但要启用no-cache-dir选项,您实际上必须将其设置为false。如果你问我,这很愚蠢……但事实就是这样。有一个github 问题可以解决这个问题。

注 2:的位置pip.conf取决于您的操作系统。请参阅文档以了解更多信息。

解决方案 9:

我刚刚遇到了类似的问题,发现让 pip 升级包的唯一方法是删除$PWD/build%CD%uild在 Windows 上)以前未完成的安装或以前版本的 pip 遗留的目录(它现在在成功安装后删除构建目录)。

解决方案 10:

在 archlinux 上,pip 缓存位于 ~/.cache/pip,我可以通过删除其中的 http 文件夹来解决我的问题。

解决方案 11:

在我的 Mac 上,我必须删除缓存目录~/Library/Caches/pip/

解决方案 12:

简单地

rm -d -r "$(pip cache dir)"

解决方案 13:

(pyvenv.d) jdoe$ pip --version       # pip version for this answer (or newer).
pip 21.1.1

(pyvenv.d) jdoe$ pip cache --help    # Review all options available to you.

(pyvenv.d) jdoe$ pip cache dir       # Cache-directory for pip(1).
/home/jdoe/.cache/pip

(pyvenv.d) jdoe$ pip cache purge     # Purge cache-directory (by example).
Files removed: 621                   # If cache-directory is already empty, the
                                     # output will be: "ERROR: No matching packages".

解决方案 14:

在 Windows 7 上,我必须删除%HOMEPATH%/pip

解决方案 15:

如果使用虚拟环境,请查找build环境根目录下的目录。

解决方案 16:

我必须删除 Windows 7 上的 %TEMP%\pip-build

解决方案 17:

在 Mac OS (Mavericks) 上,我必须删除/tmp/pip-build/

解决方案 18:

更好的方法是删除缓存并重建。这样,如果你为其他虚拟环境再次安装它,它将使用缓存,而不是每次安装时都进行构建。

例如,当你安装它时,它会说它使用缓存的轮子,

Processing <some_prefix>/Library/Caches/pip/wheels/d0/c4/e4/e49fd07bca8dda00dd6b4bbc606aa05a25aacb00d45747a47a/horovod-0.19.3-cp37-cp37m-macosx_10_9_x86_64.wh

只需删除该内容并重新启动安装即可。

解决方案 19:

我在我的操作系统(Ubuntu 20.04)上默认使用旧版本的 Python(v3.8)运行了清除 pip 缓存的命令pip cache purge,然后出现了错误:

ERROR: unknown command "cache" - maybe you meant "check"

我也尝试了该命令python3 -m pip cache purge,但仍然出现同样的错误。

我通过安装较新版本的 Python (v3.13.1) 然后运行命令解决了该问题并清除了 pip 缓存

python3.13 -m pip cache purge

笔记:

您可以通过运行以下命令来安装 Python3.13 和 pip:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.13-full
python3.13 -m ensurepip --upgrade

不建议篡改 Linux 操作系统上已安装的最新受支持 Python 版本,因为您的发行版在某种程度上依赖于它。但是,您可以安装多个版本的 Python。安装 Python3.13 后,只需在每次使用 Python 时指定要使用的版本即可。示例:

python3.13 --version

解决方案 20:

(...) 看来 pip 正在重新使用缓存 (...)

我非常确定情况并非如此。Pip 过去经常(错误地)重用构建目录而不是缓存。这个问题已在 2013 年 7 月 23 日发布的 pip 1.4 版中得到修复。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用