ChatGPT解决这个技术问题 Extra ChatGPT

pip 使用不正确的缓存包版本,而不是用户指定的版本

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

 pip install psycopg2

代替:

 pip install psycopg2==2.4.1

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

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

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

当前最新的答案(由 pip 维护者发布)是 stackoverflow.com/a/61762308/1931274

J
Jossef Harush Kadouri

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

如果使用比 pip 6.0 更早的 pip,请使用 pip install -U pip 升级它。


我查看了 ~/.pip 但它是一个空目录。您关于 --ignore-installed 的提示成功了!
在 OSX 上,我不得不删除 $TMPDIR 中的 pip 相关目录
如果使用 virtualenv,您可能必须删除 envs/{yourenvsname}/build/{packageinquestion} 目录...
在 Windows 中:我看到 pip 缓存目录位于 ~\AppData\Local\pip\cache
这个答案只是部分正确。 --no-cache-dir 不删除缓存文件夹的内容。
D
Dr Manhattan

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

Linux 和 Unix

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

操作系统

~/Library/Caches/pip

视窗

%LocalAppData%\pip\Cache

更新

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

pip cache dir

我的 Ubuntu 安装的示例输出:

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

当前最新的答案(由 pip 维护者发布)是 stackoverflow.com/a/61762308/1931274。现在最好的方法是pip cache purge
根据您链接到的答案,pip cache purge 仅适用于 pip 20.1。这个答案似乎适用于所有 pip 版本和所有平台,这将使其更普遍有用,但我不知道是不是这样。
d
djvg

使用 pip 20.1 或更高版本,您可以执行以下操作:

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

pip 缓存清除:从 pip 的缓存中清除所有轮子文件。

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

如果您出于某种原因不想使用 pip 缓存(根据 the official docs,这是个坏主意),您的选择是:

pip install --no-cache-dir :安装一个包而不使用缓存,仅用于这个运行。

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

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

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

修复了一些与清理和不重用构建目录相关的问题。 (#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 配置机制的详细信息,请参阅 here

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


我有 pip 20.1.1 但是当我尝试 pip cache purge 我得到下一个错误:ERROR: No matching packages 但我已经安装了很多不同的包
@mikhail_sam 尝试 pip cache list 如果它没有显示任何内容,而不是您没有缓存任何内容。
对我来说,pip cache purgepip cache list 建议缓存为空,但 du -hs ~/.cache/pip 显示 242MB。
pip config set global.cache-dir false 中有错字。它应该是 pip config set global.no-cache-dir false
我收到错误 ERROR: unknown command "cache" - maybe you meant "check"
R
Rob Bednark

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

从 v6.0 开始,pip 提供了一个默认缓存,其功能类似于 Web 浏览器。虽然默认情况下缓存处于打开状态并且默认情况下被设计为正确的事情,但您可以禁用缓存并始终使用 --no-cache-dir 选项访问 PyPI。


这是正确的答案...该链接还显示了 pip 在 Linux、Windows 和 OS X 上存储缓存的位置。
另外,如果您想从缓存中删除“坏”对象,请查看页面以查找缓存文件的位置,并“找到”有问题的包。 Linux 是 ~/.cache/pip,Mac 是 ~/Library/Caches/pip 等。有趣的是,psycopg2 也是我的问题包,但这是因为现有包是为不同的 Postgresql 库编译的,该库不再存在我的服务器。
Y
Yihe

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

pip --no-cache-dir install scipy

@dafeda 的回答在 4 个月前提供了相同的信息
B
Bence Mélykúti

Since pip 20.1b1,于 2020 年 4 月 21 日发布并“添加了 pip cache 命令用于检查/管理 pip 的车轮缓存”,可以发出以下命令:

pip cache purge

参考指南在这里:
https://pip.pypa.io/en/stable/reference/pip_cache/
对应的 pull request is here


pip3 呢?使用 pip3 我得到了 ERROR: unknown command "cache" - maybe you meant "check"
那么您可能应该升级您的 pip(或 pip3,我认为自从 Python 2 逐步淘汰以来应该是同一件事):pip install --upgrade pippip3 install --upgrade pip
即使在更新 pip 之后,我也会收到错误 ERROR: unknown command "cache" - maybe you meant "check"
J
Jace Browning

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


实际上 /tmp/pip-build-%username_that_running_pip%
在 Ubuntu 14 上是 /tmp/pip_build_root/(注意下划线)
R
Rotareti

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

[global]
no-cache-dir = false

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

注意 2: pip.conf 的位置取决于您的操作系统。有关详细信息,请参阅 documentation


他们真的就使用 False 而不是 True 激活选项的理由争论了 3 年吗? -真的- ?
d
dhobbs

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


e
eneepo

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


m
matlads

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


t
takelushi

简单地

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

J
Jace Browning

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


V
Vajk Hermecz

如果使用 virtualenv,请在您的环境根目录下查找 build 目录。


M
Mikhail M

我不得不在 Windows 7 上删除 %TEMP%\pip-build


谢谢+1。我也在使用 Windows 7,并在我的 %TEMP%\pip 文件夹下找到了该文件夹。如果有人不确定,%TEMP% 会在您的环境变量中定义。
N
NYCeyes
(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".



U
Uyghur Lives Matter

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


I
Izana

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

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

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

只需删除那个并重新开始安装。


C
Cody Gray

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

我很确定这不是正在发生的事情。 Pip 曾经(错误地)重用构建目录而不是缓存。 This was fixed in version 1.4 of pip 于 2013 年 7 月 23 日发布。