我需要专门安装psycopg2 v2.4.1。我不小心做了:
pip install psycopg2
而不是:
pip install psycopg2==2.4.1
安装2.4.4而不是早期版本。
现在即使在我卸载psycopg2并尝试使用正确的版本重新安装之后,pip似乎正在重新使用它第一次下载的缓存。
如何强制pip清除其下载缓存并使用我在命令中包含的特定版本?
答案 0 :(得分:389)
如果使用pip 6.0或更高版本,请尝试添加--no-cache-dir
option。
如果使用比pip 6.0旧的pip,请使用pip install -U pip
升级它。
答案 1 :(得分:312)
清除适合您系统的缓存目录
Linux和Unix
var data = (from product in context.Products
from department in context.Departments
from category in context.Categories
where product.DeptId == department.DeptId
&& product.CatId == category.CatId
select new
{
product.Code,
product.Name,
department.Name,
category.Name
}).Distinct.ToList();
OS X
~/.cache/pip # and it respects the XDG_CACHE_HOME directory.
窗
~/Library/Caches/pip
答案 2 :(得分:96)
来自https://pip.pypa.io/en/latest/reference/pip_install.html#caching的文档:
从v6.0开始,pip提供了一个默认的默认缓存 功能类似于Web浏览器的功能。缓存是通过 默认情况下,设计做正确的事情,默认情况下你可以禁用 缓存并始终使用
--no-cache-dir
访问PyPI 选项。
答案 3 :(得分:84)
(这里是点子维护者!)
该问题中提到的“由于缓存导致安装错误版本”的特定问题已在pip 1.4中修复(早在2013年!):
解决了许多与清理和不重用构建目录有关的问题。 (#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>
)
自pip 10.0(早在2018年!)以来,添加了pip config
命令,可用于将pip配置为始终忽略缓存-pip config set global.cache-dir false
将pip配置为不使用缓存“全局”(即在所有命令中)。
从pip 20.1开始,pip具有pip cache
命令来管理pip缓存的内容。
pip cache purge
删除缓存中的所有wheel文件。pip cache remove matplotlib
有选择地从缓存中删除与matplotlib相关的文件。总而言之,pip提供了许多调整缓存使用方式的方法:
pip install --no-cache-dir <package>
:仅运行一次即可安装软件包,而无需使用缓存。pip config set global.cache-dir false
:将pip配置为不“全局”使用所有命令中的缓存pip cache remove matplotlib
:从pip的缓存中删除所有与matplotlib相关的wheel文件。pip cache purge
:清除pip缓存中的所有文件。答案 4 :(得分:56)
pip可以安装py忽略缓存,就像这样
pip --no-cache-dir install scipy
答案 5 :(得分:29)
在Ubuntu上,我不得不删除/tmp/pip-build-root
。
答案 6 :(得分:14)
Since pip 20.1b1(于2020年4月21日发布)并“添加了pip cache
命令,用于检查/管理点子的转盘缓存”,可以发出以下命令:
pip cache purge
参考指南在这里:
https://pip.pypa.io/en/stable/reference/pip_cache/
相应的pull request is here。
答案 7 :(得分:8)
我遇到了类似的问题,发现获取pip来升级软件包的唯一方法是删除以前可能遗留下来的$PWD/build
(Windows上的%CD%\build
)目录未完成的安装或以前版本的pip(它现在在成功安装后删除构建目录)。
答案 8 :(得分:5)
简单
rm -d -r "$(pip cache dir)"
答案 9 :(得分:4)
在archlinux pip缓存位于〜/ .cache / pip,我可以通过删除其中的http文件夹来解决我的问题。
答案 10 :(得分:3)
在我的Mac上,我必须删除缓存目录~/Library/Caches/pip/
答案 11 :(得分:3)
如果您希望默认设置--no-cache-dir
选项,则可以将其放入pip.conf
:
[global]
no-cache-dir = false
pip.conf
的位置取决于您的操作系统。有关更多信息,请参见documentation。
答案 12 :(得分:3)
在Windows 7上,我不得不删除%HOMEPATH%/pip
。
答案 13 :(得分:2)
我不得不在Windows 7上删除%TEMP%\ pip-build
答案 14 :(得分:2)
如果使用virtualenv,请在您的环境根目录下查找build
目录。
答案 15 :(得分:1)
在Mac OS(Mavericks)上,我不得不删除/tmp/pip-build/
答案 16 :(得分:1)
$mail = new PHPMailer(true);
if(isset($_POST['submit']))
{
try {
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->XMailer = ' ';
$mail->Host = 'smtp.gmail.com';
$mail->Port = '587';
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Priority = 1;
$mail->isHTML(true);
// $mail->Username = 'email1@gmail.com';
// $mail->Password = 'email1apppw';
// $mail->SetFrom('email1@gmail.com', 'Email One');
// $mail->AddReplyTo('email1@gmail.com', 'Email One');
$mail->Username = 'email2@gmail.com';
$mail->Password = 'email2apppw';
$mail->SetFrom('email2@gmail.com', 'Email One');
$mail->AddReplyTo('email2@gmail.com', 'Email One');
$mail->send();
答案 17 :(得分:0)
一种更好的方法是删除缓存并重建它。这样,如果您再次为其他virtualenv安装它,它将使用缓存而不是每次安装时都进行构建。
例如,当您安装它时,它将说它使用了缓存的滚轮,
Processing <some_prefix>/Library/Caches/pip/wheels/d0/c4/e4/e49fd07bca8dda00dd6b4bbc606aa05a25aacb00d45747a47a/horovod-0.19.3-cp37-cp37m-macosx_10_9_x86_64.wh
只需删除其中一个,然后重新开始安装即可。
答案 18 :(得分:-2)
(...)看来pip正在重新使用缓存(...)
我很确定这不是发生了什么。 Pip曾经(错误地)重用构建目录而不是缓存。 This was fixed in version 1.4 of pip于2013-07-23发布。