กำลังลบแคชของ pip ใช่ไหม


443

ฉันต้องการติดตั้ง psycopg2 v2.4.1 เป็นพิเศษ ฉันทำโดยไม่ได้ตั้งใจ:

 pip install psycopg2

แทน:

 pip install psycopg2==2.4.1

ที่ติดตั้ง 2.4.4 แทนที่จะเป็นเวอร์ชั่นก่อนหน้า

ตอนนี้แม้หลังจากที่ฉันถอนการติดตั้ง psycopg2 ไปแล้วและพยายามติดตั้งรุ่นที่ถูกต้องอีกครั้งก็ปรากฏว่ามีการใช้แคชที่ดาวน์โหลดมาอีกครั้งในครั้งแรก

ฉันจะบังคับให้ pip ล้างแคชดาวน์โหลดและใช้เวอร์ชันเฉพาะที่ฉันรวมไว้ในคำสั่งได้อย่างไร


4
มากที่สุดในปัจจุบันขึ้นไปวันที่คำตอบ (โพสต์โดยผู้ดูแล pip) เป็นstackoverflow.com/a/61762308/1931274
pradyunsg

คำตอบ:


506

ถ้าใช้ pip 6.0 หรือใหม่กว่าลองเพิ่มตัวเลือก--no-cache-dir

ถ้าใช้ pip เก่ากว่า pip 6.0 pip install -U pipอัพเกรดมันด้วย


8
ฉันดูใน ~ / .pip แต่เป็นไดเรกทอรีว่าง เคล็ดลับของคุณบน - ลงนามติดตั้งแล้วได้หลอกลวง!
Geuis

7
บน OSX ฉันต้องลบไดเรกทอรีที่เกี่ยวข้องกับ pip ใน$TMPDIR
Bryan P

2
หากใช้ virtualenv คุณอาจต้องลบ envs / {yourenvsname} / build / {packageinquestion} dir ...
Vajk Hermecz

6
ใน windows: ฉันเคยเห็นไดเรกทอรีแคช pip อยู่ใน ~ \ AppData \ Local \ pip \ cache
พุธ

2
คุณต้องทำpython -m pip install -U pipบน Windows (ไม่สามารถอัปเกรดได้เนื่องจากการล็อคpip.exeไฟล์เป็นอย่างอื่น)
jpmc26

456

ล้างไดเร็กทอรีแคชที่เหมาะสมกับระบบของคุณ

Linux และ Unix

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

OS X

~/Library/Caches/pip

ของ windows

%LocalAppData%\pip\Cache

6
มันเป็นคำตอบที่สามอันดับแรกไม่ตอบคำถามและนี่เป็นคำตอบแรกที่ทำ
AmphotericLewisAcid

1
มากที่สุดในปัจจุบันขึ้นไปวันที่คำตอบ (โพสต์โดยผู้ดูแล pip) เป็นstackoverflow.com/a/61762308/1931274 pip cache purgeวิธีที่ดีที่สุดในขณะนี้คือ
pradyunsg

104

จากเอกสารที่https://pip.pypa.io/en/latest/reference/pip_install.html#caching :

เริ่มต้นด้วย v6.0, pip มอบแคชตามค่าเริ่มต้นซึ่งทำงานคล้ายกับเว็บเบราว์เซอร์ ในขณะที่แคชเปิดอยู่ตามค่าเริ่มต้นและได้รับการออกแบบให้ทำสิ่งที่ถูกต้องโดยค่าเริ่มต้นคุณสามารถปิดใช้งานแคชและเข้าถึง PyPI ได้ตลอดเวลาโดยใช้--no-cache-dir ตัวเลือก


2
นี่เป็นคำตอบที่ถูกต้อง ... ลิงค์นี้ยังแสดงให้เห็นว่า pip หยุดแคชใน Linux, Windows & OS X ได้อย่างไร
jasonjwwilliams

3
และเพื่อเพิ่มถ้าคุณต้องการลบวัตถุ "ไม่ดี" ออกจากแคชของคุณให้ดูที่หน้าเพื่อค้นหาตำแหน่งของไฟล์แคชและ "ค้นหา" แพ็คเกจที่ละเมิด Linux คือ ~ / .cache / pip, Mac คือ ~ / Library / Caches / pip เป็นต้นที่น่าสนใจ psycopg2 เป็นแพคเกจปัญหาของฉันด้วย แต่เป็นเพราะแพ็คเกจที่มีอยู่นั้นถูกคอมไพล์สำหรับไลบรารี Postgresql ที่แตกต่างกันซึ่งไม่มีอยู่อีกต่อไป เซิร์ฟเวอร์ของฉัน
Chris Cogdon

78

pip สามารถติดตั้งแพ็กเกจโดยไม่สนใจแคชเช่นนี้

pip --no-cache-dir install scipy

7
คำตอบของ @dafeda ให้ข้อมูลเดียวกัน 4 เดือนที่ผ่านมา
แฟน


19

(ผู้ดูแล pip ที่นี่!)

ตั้งแต่ pip 6.0 (back in 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 เพื่อไม่ใช้แคช "global" (เช่นในคำสั่งทั้งหมด)

ตั้งแต่ pip 20.1 pip มีpip cacheคำสั่งให้จัดการเนื้อหาของแคชของ pip

  • pip cache purge ลบไฟล์ล้อทั้งหมดในแคช
  • pip cache remove matplotlib เลือกลบไฟล์ที่เกี่ยวข้องกับ matplotlib ออกจากแคช

โดยสรุป pip มีวิธีมากมายในการปรับแต่งวิธีการใช้แคช:

  • pip install --no-cache-dir <package>: ติดตั้งแพ็กเกจโดยไม่ต้องใช้แคชสำหรับการทำงานครั้งนี้
  • pip config set global.cache-dir false: กำหนดค่า pip เพื่อไม่ใช้แคช "global" (ในทุกคำสั่ง)
  • pip cache remove matplotlib: ลบไฟล์ล้อทั้งหมดที่เกี่ยวข้องกับ matplotlib ออกจากแคชของ pip
  • pip cache purge: เพื่อล้างไฟล์ทั้งหมดจากแคชของ pip

ปัญหาเฉพาะของ "การติดตั้งรุ่นที่ไม่ถูกต้องเนื่องจากการแคช" ปัญหาที่กล่าวถึงในคำถามได้รับการแก้ไขใน pip 1.4 (ย้อนหลังในปี 2013!):

แก้ไขปัญหาที่เกี่ยวข้องกับการล้างข้อมูลและไม่นำไดเรกทอรีการสร้างกลับมาใช้ใหม่ (# 413, # 709, # 634, # 602, # 939, # 865, # 948)


10

หากคุณต้องการตั้งค่า--no-cache-dirตัวเลือกโดยปริยายคุณสามารถใส่สิ่งนี้ลงในpip.conf:

[global]
no-cache-dir = false

ตำแหน่งpip.confขึ้นอยู่กับระบบปฏิบัติการของคุณ ดูเอกสารประกอบสำหรับข้อมูลเพิ่มเติม


9

ฉันเพิ่งมีปัญหาที่คล้ายกันและพบว่าวิธีเดียวที่จะได้รับ pip ในการอัพเกรดแพ็คเกจคือการลบไดเรกทอรี$PWD/build( %CD%\buildบน Windows) ที่อาจค้างอยู่จากการติดตั้งที่ยังไม่เสร็จก่อนหน้านี้หรือ pip รุ่นก่อนหน้า (ตอนนี้ลบ สร้างไดเรกทอรีหลังจากติดตั้งสำเร็จ)


6

ในแคช pip archlinux ตั้งอยู่ที่ ~ / .cache / pip ฉันสามารถแก้ไขปัญหาของฉันได้โดยการลบโฟลเดอร์ http ข้างใน



5

ตั้งแต่ pip 20.1b1ซึ่งวางจำหน่ายเมื่อวันที่ 21 เมษายน 2020 และ "เพิ่มpip cacheคำสั่งสำหรับการตรวจสอบ / จัดการล้อแคชของ pip" จึงเป็นไปได้ที่จะออกคำสั่งนี้:

pip cache purge

คู่มืออ้างอิงอยู่ที่นี่:
https://pip.pypa.io/en/stable/reference/pip_cache/
ที่สอดคล้องคำขอดึงอยู่ที่นี่



3

หากใช้ virtualenv ให้ค้นหาbuildไดเร็กทอรีภายใต้รูทสภาวะแวดล้อมของคุณ


3

ฉันต้องลบ% TEMP% \ pip-build บน Windows 7


1
ขอบคุณ + 1 ฉันใช้ Windows 7 และพบโฟลเดอร์ภายใต้โฟลเดอร์% TEMP% \ pip ของฉัน % TEMP% ถูกกำหนดไว้ในตัวแปรสภาพแวดล้อมของคุณหากใครไม่แน่ใจ
Simon


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

เพียงลบอันนั้นแล้วเริ่มการติดตั้งของคุณใหม่


-2

(... ) ดูเหมือนว่า pip กำลังใช้แคชอีกครั้ง (... )

ฉันค่อนข้างแน่ใจว่านั่นไม่ใช่สิ่งที่เกิดขึ้น Pip ใช้ในการสร้างไดเรกทอรีสร้างใหม่อย่างผิดพลาดโดยไม่ใช้แคช สิ่งนี้ได้รับการแก้ไขใน pip รุ่น 1.4ซึ่งเผยแพร่เมื่อ 2013-07-23

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.