จะอัพเกรด pip เป็นรุ่นล่าสุดได้อย่างไร?


51

ฉันติดตั้ง pip โดยใช้get-pip.pyหลังจากpip freezeข้อผิดพลาดด้านล่าง

Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/freeze.py", line 74, in run
    req = pip.FrozenRequirement.from_dist(dist, dependency_links, find_tags=find_tags)
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 299, in from_dist
    assert len(specs) == 1 and specs[0][0] == '=='
AssertionError

Storing debug log for failure in /home/simon/.pip/pip.log

ดังนั้นฉันจึงตรวจสอบ 1.7 เป็นคนล่าสุด ถ้าฉันทำตามขั้นตอนด้านล่างและมันไม่ได้อัปเดต ... ช่วยฉันที่นี่ ...

simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)
simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)
simon@simon-OptiPlex-780:~/Nightybuild$ pip install -U pip
Downloading/unpacking pip
  Downloading pip-7.1.2-py2.py3-none-any.whl (1.1MB): 1.1MB downloaded
Installing collected packages: pip
Successfully installed pip
Cleaning up...
simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)

1
sudo -H pip3 ติดตั้ง
อัป

คำตอบ:


54

ฉันมักจะใช้คำสั่งต่อไปนี้เพื่ออัพเกรดทั้งสองpip2(= pipโดยค่าเริ่มต้น) และpip3:

sudo -H pip3 install --upgrade pip
sudo -H pip2 install --upgrade pip

คุณต้องตรวจสอบให้แน่ใจว่าคุณอัพเกรดเวอร์ชัน (สำหรับ Python 2 หรือ 3) ซึ่งคุณต้องการโต้ตอบกับคำสั่งpipโดยไม่มีตัวเลข

นอกจากนี้โปรดทราบว่าการดำเนินการนี้จะช่วยให้สามารถติดตั้งแพ็คเกจรุ่นเก่าผ่านapt-getแพคเกจอื่น ๆ ได้ แต่เพิ่มเวอร์ชั่นใหม่ที่ไม่เกี่ยวข้องกับแพ็คเกจระบบ pipแพคเกจ -installed จะได้รับการแนะนำ แต่คุณไม่ควรเอาapt-getคน -installed ทั้งเพราะผู้จัดการแพคเกจไม่สามารถรู้ได้ว่ามีpipรุ่นมีการติดตั้งไว้เป็นอย่างอื่น


3
ทำไมมันจึงเป็นสิ่งสำคัญที่จะตั้งในบ้านsudo -H?
LéoLéopold Hertz

11
@Masi เพราะpipต้องการเขียนไฟล์ที่ดาวน์โหลดไว้ที่อื่นเพื่อแคช มันถูกนำไปใช้เพื่อวางไว้ในโฟลเดอร์ย่อยของโฮมไดเรกทอรีของผู้ใช้ปัจจุบัน หากคุณใช้งานโดยที่ไม่แจ้ง-Hให้ทราบเพราะจะตรวจพบว่าไดเรกทอรีบ้านที่ตั้งไว้ในปัจจุบัน (ผู้ใช้ปกติ) ไม่ตรงกับผู้ใช้ที่เรียกใช้เป็น (root) ถ้ามันเขียนไฟล์ไว้ในโฮมไดเร็กตอรี่ของคุณ, พวกเขาจะเป็นเจ้าของโดย root และคุณไม่สามารถเข้าถึงได้ในฐานะผู้ใช้ทั่วไปอีกต่อไป ดังนั้นจึงไม่แคชไฟล์ในกรณีนี้ ไม่น่ากลัวที่จะละเว้นสิ่ง-Hที่pipตรวจพบและเตือนคุณ
ผู้บัญชาการ Byte

1
ทำไมทั้งสองคำสั่งจึงเขียนทับpipคำสั่ง? เมื่อฉันอัพเกรดpip2มันไม่ได้ปรับคำสั่งเพียงpip2 pip
Yep_It's_Me

@ Yep_It's_Me นี้เป็นเพราะpipสัมพันธ์กับหลามเวอร์ชันที่คุณโทรหา และนี่คือสาเหตุที่คำสั่งของเขาpip2& pip3ตามลำดับเรียกเวอร์ชันของ python ที่เหมาะสมเพื่ออัพเดต pip มันสมเหตุสมผลไหม
JayRizzo

27

ฉันคิดว่า

pip install --upgrade pip

คำสั่งไม่ทำงานอย่างถูกต้องอีกต่อไป คำสั่งที่ถูกต้องควรเป็น:

  • สำหรับ Python 3:

    python3 -m pip install --upgrade pip
  • สำหรับ Python 2:

    python2 -m pip install --upgrade pip

Gg @ david-foerster
JayRizzo

บน Linux ให้ใช้pip install -U pip(ดูการอัพเกรด pip )
Eido95

1
ฉันมีปัญหาเมื่ออัปเดต pip จากรูท (ในภาพ Docker) และมันใช้งานได้อย่างมีเสน่ห์
Cristian Ramon-Cortes

ทำงานเหมือนเครื่องรางของ Linux
HelloWorld

5

ไปที่เว็บไซต์นี้https://pypi.python.org/pypi/pip

คัดลอก (หรือ) ดาวน์โหลดลิงค์ซอร์ส (ลงท้ายด้วย. tar.gz)

สำหรับ 9.0.1 ลิงก์คือ https://pypi.python.org/pypi?:action=show_md5&digest=35f01da33009719497f01a4ba69d63c9

ขั้นตอนการติดตั้ง

wget //link goes here
tar -xzvf pip-9.0.1.tar.gz
cd pip-9.0.1
sudo python3 setup.py install

ควรเปลี่ยนเวอร์ชันเป็นเวอร์ชันล่าสุดและสามารถอัปเดตลิงค์ด้วยลิงก์เวอร์ชันล่าสุด

สิ่งนี้น่าจะใช้ได้


นี่เป็นสิ่งเดียวที่ทำงานได้สำหรับฉันเนื่องจากทุกอย่างต้องการการเชื่อมต่อกับเซิร์ฟเวอร์จากเชลล์ซึ่งล้มเหลวอีกครั้งด้วยข้อผิดพลาดเดียวกัน
Alok Rajasukumaran


1

ฉันคิดว่ามันคุ้มค่าที่จะพูดถึงว่าสิ่งที่ฉันอธิบายด้านล่างคือถ้าคุณคาดว่าpipจะชี้ไปที่ Python 2 และpip3ให้ชี้ไปที่ Python 3 เหตุผลที่ฉันพูดถึงนี้ก็เพราะเมื่อคุณอัพเกรด pip3 ก็ใช้คำสั่ง pip ด้วย ดี. นี่เป็นข้อตกลงที่ค่อนข้างแปลกเพราะโดยปกติแล้วไพ ธ อนจะชี้ไปที่ 2.x และpython3ชี้ไปที่ 3.x ที่ถูกกล่าวว่า ...

ถ้าคุณต้องการมี python 2.x pip และ python 3.x pip3 รุ่นล่าสุดอยู่ในเครื่องเดียวกัน (ใช้ pip สำหรับ 2.x และ pip3 สำหรับ 3.x) คุณต้องทำสิ่งต่อไปนี้:

sudo apt-get install python-pip python3-pip --yes
sudo python3 -m pip install pip --upgrade --force
sudo python -m pip install pip --upgrade --force # this line associates pip with Python 2

คำตอบอื่น ๆ ที่ผู้อื่นให้ไว้ไม่ได้พูดถึงว่าหลังจากรันsudo pip3 install pip --upgradeคุณจะได้คำสั่งpipแพ็คเกจติดตั้งในไดเรกทอรี python 3.x แทนไดเรกทอรี python 2.x

ส่วนหนึ่งของฉันคิดว่าเราควรปล่อย pip ไว้หลังจากอัปเกรด pip3 (แม้ว่า pip -> pip3) แต่มีอันตรายที่ผู้คนคาดหวังว่าฟังก์ชั่น pip เช่น python จะชี้ไปที่ python 2.x กล่าวอีกนัยหนึ่งผู้คนอาจได้รับการฝึกฝนให้ใช้pip / pythonสำหรับ python 2.x เช่นเดียวกับที่ได้รับการฝึกฝนให้ใช้pip3 / python3สำหรับ python 3.x


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