ฉันจะอัพเดตแพ็คเกจ Python ได้อย่างไร


234

ฉันใช้ Ubuntu 9:10 และติดตั้งแพ็คเกจชื่อ M2Crypto (เวอร์ชั่นคือ 0.19.1) ฉันต้องดาวน์โหลดสร้างและติดตั้งแพ็คเกจ M2Crypto เวอร์ชันล่าสุด (0.20.2)

แพ็คเกจ 0.19.1 มีไฟล์อยู่ในหลายตำแหน่งรวมถึง (/ usr / share / pyshared และ /usr/lib/pymodules.python2.6)

ฉันจะถอนการติดตั้งเวอร์ชัน 0.19.1 ออกจากระบบอย่างสมบูรณ์ก่อนที่จะติดตั้ง 0.20.2 อย่างไร

คำตอบ:


54

คุณอาจต้องการที่จะดูเป็นผู้จัดการแพคเกจหลามเช่นpip หากคุณไม่ต้องการใช้ตัวจัดการแพ็คเกจ Python คุณควรดาวน์โหลด M2Crypto และสร้าง / คอมไพล์ / ติดตั้งผ่านการติดตั้งเก่า


1
ขอบคุณ สิ่งที่คุณพูดทำงาน ฉันสร้างและติดตั้ง 0.20.2 โดยไม่จำเป็นต้องถอนการติดตั้ง 0.19.1
ป์สัน

461

วิธีที่ดีที่สุดที่ฉันพบคือเรียกใช้คำสั่งนี้จากเทอร์มินัล

sudo pip install [package_name] --upgrade

sudo จะขอให้ป้อนรหัสผ่านรูทของคุณเพื่อยืนยันการดำเนินการ


หมายเหตุ: ผู้ใช้บางคนอาจติดตั้ง pip3 แทน ในกรณีนั้นให้ใช้

sudo pip3 install [package_name] --upgrade

4
และถ้าคุณใช้พร็อกซีโดยไม่มีการรับรองความถูกต้อง: ติดตั้ง sudo pip [แพ็คเกจ] - อัปเกรด --proxy = ที่อยู่: พอร์ต
lmsasu

32
ฉันมาที่นี่เพื่อรับคำตอบนี้ ฉันพยายามpip updateแล้วpip upgradeก็หมดหวังจนกระทั่งเห็น--upgradeที่นี่ ทำไมพวกเขาไม่เพิ่มpip upgradeคำสั่ง?
Lars Blumberg

9
นี่เป็นคุณสมบัติที่ซ่อนอยู่
otocan

1
สำหรับผู้ใช้ Windows: sudoไม่จำเป็น
Stevoisiak

2
นี่ควรเป็นคำตอบ # 1
Cord Kaldemeyer

48

ในการอัพเกรดแพ็คเกจที่ล้าสมัยโดยอัตโนมัติ (ที่ติดตั้งโดยใช้ pip) เพียงแค่เรียกใช้สคริปต์เบลล์

pip install $(pip list --outdated | awk '{ print $1 }') --upgrade

ที่นี่pip list --outdatedจะแสดงรายการแพ็กเกจที่ล้าสมัยทั้งหมดแล้วเราจะวางไว้ที่ awk ดังนั้นมันจะพิมพ์เฉพาะชื่อเท่านั้น จากนั้น$(...)จะทำให้มันเป็นตัวแปรและจากนั้นทุกอย่างจะทำโดยอัตโนมัติอย่างมีเหตุผล ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์ (ใส่sudoก่อน pip ถ้าคุณสับสน) ฉันจะเขียนสคริปต์ชื่อpip-upgrade รหัสดัง

#!/bin/bash
sudo pip install $(pip list --outdated | awk '{ print $1 }') --upgrade

จากนั้นใช้สคริปต์บรรทัดต่อไปนี้เพื่อเตรียม:

sudo chmod +x pip-upgrade
sudo cp pip-upgrade /usr/bin/

จากนั้นเพียงแค่กดpip-upgradeและ voila!


ฉันมีข้อผิดพลาดทางไวยากรณ์ที่ชี้ไปที่เครื่องหมายวงเล็บสุดท้ายใน:awk: cmd. line:1: { print $1 })
TT--

7
@TT เวอร์ชั่นใหม่ของpipคุณต้องใช้ตัวเลือกคือ--format=legacy pip list --outdated --format=legacyนอกจากนี้ทุกคน FYI: การอัพเดทโมดูลทั้งหมดผ่าน pip อาจเป็นอันตรายต่อลีนุกซ์จำนวนมาก หลายคนมีโมดูลหลามที่เฉพาะเจาะจงผ่านทางแพคเกจ distro และ distros เหล่านั้น (โดยเฉพาะอย่างยิ่ง RHEL) สามารถแตกหักได้ถ้าคุณอัปเดตอึ ... ไม่ต้องพูดถึงข้อเท็จจริงที่ว่าถ้าคุณอัปเดตผ่าน pip แพคเกจ distro อาจเปลี่ยน การปรับปรุงในอนาคต
rsaw

ขอบคุณ @rsaw เขาพูดถูกคุณควรรันคำสั่ง pip ด้วยตัวเลือก --user
Fahim Ferdous

1
ฉันชอบคำตอบนี้ แต่ฉันเข้าใจถึงอันตรายในการอัปเดตทุกอย่างโดยอัตโนมัติ อย่างไรก็ตามเนื่องจากมรดกถูกคัดค้านใน pip 19.0 pip การติดตั้ง $ (รายการ pip - ออก - รูปแบบ = คอลัมน์ | grep -v "แพ็คเกจ" | grep -v - ---- | awk '{พิมพ์ $ 1}') -
ไมค์ v

2
เพื่อที่จะทำงานบน Ubuntu 18.04 venv ปรับดังต่อไปนี้:pip install $(pip list --outdated | tail +3 | grep -v sdist | awk '{ print $1 }') --upgrade
Alexander Remesch

34
  1. ผ่านทางพรอมต์คำสั่งของ windows เรียกใช้: pip list --outdated คุณจะได้รับรายการแพคเกจที่ล้าสมัย
  2. เรียกใช้: pip install [package] --upgrade มันจะอัปเกรด[package]และถอนการติดตั้งเวอร์ชันก่อนหน้า

ในการอัพเดท pip:

py -m pip install --upgrade pip

อีกครั้งนี่จะถอนการติดตั้ง pip รุ่นก่อนหน้าและจะติดตั้ง pip รุ่นล่าสุด


29
  • วิธีที่ 1: อัปเกรดด้วยตนเองทีละคน

pip install package_name -U
  • วิธีที่ 2: อัปเกรดทั้งหมดในครั้งเดียว (มีโอกาสย้อนกลับได้สูงหากบางแพ็คเกจไม่สามารถอัพเกรด

pip install $(pip list --outdated --format=columns |tail -n +3|cut -d" " -f1) --upgrade
  • วิธีที่ 3: อัปเกรดทีละตัวโดยใช้การวนซ้ำ

for i in  $(pip list --outdated --format=columns |tail -n +3|cut -d" " -f1); do pip install $i --upgrade; done


9

ใช้pipupgrade !

$ pip install pipupgrade
$ pipupgrade --latest --interactive

pipupgradeช่วยให้คุณอัพเกรดระบบท้องถิ่นหรือแพ็คเกจจากrequirements.txtไฟล์ได้! นอกจากนี้ยังเลือกอัพเกรดแพ็คเกจที่ไม่ทำลายการเปลี่ยนแปลง เข้ากันได้กับ Python2.7 +, Python3.4 + และ pip9 +, pip10 +, pip18 +

ป้อนคำอธิบายรูปภาพที่นี่

หมายเหตุ: ฉันเป็นผู้เขียนเครื่องมือ


1
เมื่อใดก็ตามที่ฉันใช้เครื่องมือนี้ฉันจะได้รับการตอบสนอง "[0; 93mChecking ... [0m" และจะไม่ทำอะไรเลย ฉันใช้มันไม่ถูกต้องหรือไม่?
รุนแรง

ฉันใช้ Mac กับ MacPorts ด้วย Python 3.7 pipupgrade ใช้งานได้เพียง 5 จาก 50 แพ็คเกจส่วนที่เหลือฉันต้องใช้: สำหรับ i ในpip3.7 list --outdated | sed -n -e '3,$s/ .*//p'; ทำการติดตั้ง pip3.7 - อัปเกรด $ i; เสร็จแล้ว
Michael Dreher

4

แพคเกจเดิมติดตั้งอย่างไร? หากผ่านการใช้งานที่เหมาะสมคุณก็สามารถทำได้apt-get remove python-m2crypto

หากคุณติดตั้งผ่าน easy_install ฉันค่อนข้างมั่นใจว่าวิธีเดียวคือการทิ้งไฟล์ภายใต้ lib แชร์และอื่น ๆ

คำแนะนำของฉันในอนาคต? ใช้บางอย่างเช่นpipเพื่อติดตั้งแพ็คเกจของคุณ นอกจากนี้คุณสามารถค้นหาสิ่งที่เรียกว่าvirtualenvเพื่อให้แพ็กเกจของคุณถูกจัดเก็บตามสภาพแวดล้อมแทนที่จะเป็นแบบรูทเท่านั้น

ด้วย pip มันง่ายมาก:

pip install m2crypto

แต่คุณสามารถติดตั้งจาก git, svn, repos ฯลฯ ด้วยที่อยู่ที่ถูกต้อง นี่คือทั้งหมดที่อธิบายไว้ในเอกสารประกอบ pip


วิธีที่เขาอธิบายว่าไฟล์ถูกติดตั้งไว้ที่ใดแสดงว่าแพคเกจนั้นได้รับการติดตั้งโดยใช้ apt package manager - เพราะ (บน Debian AFAIK) apt จะติดตั้งแพ็กเกจหลามภายใต้ 2 ตำแหน่งที่เขาระบุไว้ - / share / pyshared / .. ข้ามรุ่นและ / usr / lib / .. สำหรับชิ้นส่วนเฉพาะรุ่น ติดตั้งง่าย ๆ / pip ในทางกลับกันก็จะใช้ / usr / local / lib / .. - อย่างที่คุณบอกไว้ว่า - เพียงแค่ apt-get remove จะทำให้เขา
Basel Shishani


3

ในสมุดบันทึก Juptyer วิธีที่ง่ายมากคือ

!pip install <package_name> --upgrade

ดังนั้นคุณต้องแทนที่ด้วยชื่อแพ็คเกจจริง


2

รับแพ็กเกจที่ล้าสมัยทั้งหมดและสร้างไฟล์แบตช์ด้วยคำสั่งต่อไปนี้ pip install xxx - อัปเกรดสำหรับแต่ละแพ็กเกจที่ล้าสมัย

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