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 并尝试使用正确的版本重新安装后,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 install
、pip download
和pip 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 版中得到修复。