ฉันจะอัพเดต pip เองจากภายในสภาพแวดล้อมเสมือนจริงของฉันได้อย่างไร


523

ฉันสามารถอัปเดตแพ็คเกจที่จัดการโดย pip ได้ แต่ฉันจะอัพเดต pip เองได้อย่างไร ตามที่pip --versionฉันมี pip 1.1 ติดตั้งใน virtualenv ของฉันและฉันต้องการอัปเดตเป็นเวอร์ชันล่าสุด

คำสั่งสำหรับสิ่งนั้นคืออะไร? ฉันจำเป็นต้องใช้การแจกจ่ายหรือมีคำสั่ง pip หรือ virtualenv หรือไม่ ฉันได้ลองแล้วpip updateและpip update pipไม่ประสบความสำเร็จ


40
pip install --upgrade pip? มันเป็นเพียงแพคเกจ PyPI อื่น
Cairnarvon

1
คำสั่งนั้นให้ฉัน "/ Users / zak / MyProject / venv / bin / การติดตั้ง pip: ข้อผิดพลาด: ไม่มีตัวเลือกดังกล่าว:
อัปเดต

4
มัน--upgradeไม่ได้--updateขอโทษ ฉันแก้ไขโพสต์ของฉันทันที แต่คุณต้องเห็นมันในเวลาที่ผิด
Cairnarvon

2
@Cairnarvon เป็นคำสั่งต่างกันpip3หรือไม่? ฉันพยายาม pip3 แต่เพิ่งบอกฉันว่าหาไม่เจอแล้วก็บ่นอีกครั้งว่ามันไม่ทันสมัย ​​... เมื่อมันไม่ให้ฉันอัปเดต / อัปเกรด!
Charlie Parker

คำตอบ:


929

pipเป็นเพียงแพคเกจ PyPIเหมือนกัน คุณสามารถใช้มันเพื่ออัพเกรดตัวเองในแบบเดียวกับที่คุณจะอัพเกรดแพ็คเกจ:

pip install --upgrade pip

บน Windows คำสั่งที่แนะนำคือ:

python -m pip install --upgrade pip

53
ใน Windows ฉันมีปัญหาการอนุญาตพยายามอัปเกรด pip โดยใช้ pip แต่ฉันใช้ easy_install เพื่ออัปเกรด:easy_install pip
bsa

8
เมื่อฉันทำ pip นี้ดูเหมือนจะอัพเกรด (1.1 -> 1.4) แต่เมื่อฉันทำ "pip --version" มันยังคงแสดงเวอร์ชั่นเก่า 1.1 พยายามปิดใช้งานและเปิดใช้งาน virtualenv อีกครั้ง แต่ยังคงแสดงเวอร์ชันเก่าอยู่
Zitrax

40
บน Windows น่าจะใช้คำสั่งแบบนั้นดีกว่า: python -m pip install --upgrade pipเพื่อหลีกเลี่ยงการเรียกใช้ pip.exe จากไดเรกทอรีสคริปต์
bialix

@Zitrax คุณแก้ไขปัญหานี้ได้หรือไม่ ฉันกำลังเผชิญกับปัญหาเดียวกัน
Mohammad ali baghershemirani

@Mohammadalibaghershemirani ขอโทษนี่เป็นเวลานานแล้ว - จำไม่ได้
Zitrax

58

วิธีการที่ปลอดภัยมากขึ้นคือการทำงาน pip แม้ว่าโมดูลหลาม :

python -m pip install -U pip

ดูเหมือนว่า Windows จะมีปัญหากับไบนารีที่พยายามจะแทนที่ตัวเองวิธีนี้ใช้ได้ผลกับข้อ จำกัด นั้น


9
นี่คือสิ่งที่ pip แนะนำตัวเองหากตรวจพบเวอร์ชันที่ใหม่กว่าของตัวเอง
tephyr

1
ฉันเชื่อว่าเหตุผลนี้ปลอดภัยกว่าเพราะใน OS บางระบบ (Windows) เพียงแค่ใช้ pip โดยตรงสามารถสร้างการล็อกไฟล์บนไฟล์ปฏิบัติการได้ซึ่งจะป้องกันการอัปเดต โดยการเรียก Python และบอกให้โหลดโมดูลโดยตรงคุณหลีกเลี่ยงการเข้าถึงโปรแกรมที่เรียกใช้งานได้
jpmc26

คุณต้องเรียกใช้พรอมต์คำสั่งในโหมดผู้ดูแลระบบเพื่อให้สิ่งนี้ทำงานได้ ฉันลองใช้คำแนะนำอื่น ๆ และไม่มีอะไรทำงานจนกว่าฉันจะรีสตาร์ทหน้าต่างพรอมต์คำสั่งในโหมดผู้ดูแลระบบจากนั้นคำสั่งนี้ก็ทำงานได้อย่างสมบูรณ์
DaveN59

42

ในกรณีของฉันรุ่น pip ของฉันเสียดังนั้นการอัปเดตด้วยตัวเองจะไม่ทำงาน

การแก้ไข:

(inside virtualenv):easy_install -U pip

1
มันเป็นกรณีของฉันด้วย ฉันลองใช้วิธีอื่นทั้งหมด แต่มีเพียงวิธีนี้เท่านั้นที่ช่วยฉัน ขอบคุณมาก!
levif

เช่นเดียวกันที่นี่นั่นเป็นวิธีเดียวที่เหมาะกับฉันบนเดเบียน การใช้ python หรือ pip เพื่ออัพเกรด pip จากภายใน virtualenv จะล้มเหลวเพราะมันปฏิเสธที่จะถอนการติดตั้ง pip ที่มีอยู่นอก venv
3748764

การเรียกใช้สิ่งนี้แสดงให้ฉันเห็นถึงสิ่งต่าง ๆ มากมายรวมถึงสิ่งDownload error on https://pypi.python.org/simple/pip/: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) -- Some packages may not be found!ที่ไม่แสดงเมื่อใช้งาน และอาจเป็นสาเหตุว่าทำไมการติดตั้งแพ็กเกจ pip ใด ๆ จึงล้มเหลวและสาเหตุที่การอัพเกรด pip ผ่าน pip นั้นล้มเหลวเช่นกัน SSL ดูเหมือนว่าจะใช้งานไม่ได้
Vadorequest

9

ฉันลองวิธีแก้ปัญหาทั้งหมดที่กล่าวถึงข้างต้นภายใต้ Debian Jessie มันใช้งานไม่ได้เพราะมันเพิ่งจะรวบรวมเวอร์ชั่นล่าสุดโดยตัวจัดการแพคเกจเดเบียนซึ่งเป็น 1.5.6 ซึ่งเท่ากับรุ่น 6.0.x บางแพ็คเกจที่ใช้ pip เป็นสิ่งที่จำเป็นต้องมีจะไม่ทำงานตามผลลัพธ์เช่น spaCy (ซึ่งต้องการตัวเลือก - no-cache-dir เพื่อให้ทำงานได้อย่างถูกต้อง)

ดังนั้นวิธีที่ดีที่สุดในการแก้ปัญหาเหล่านี้คือการเรียกใช้get-pip.py ที่ดาวน์โหลดโดยใช้ wget จากเว็บไซต์หรือใช้ curl ดังนี้

 wget https://bootstrap.pypa.io/get-pip.py -O ./get-pip.py
 python ./get-pip.py
 python3 ./get-pip.py

จะทำการติดตั้งเวอร์ชั่นปัจจุบันซึ่งในขณะที่เขียนโซลูชันนี้คือ 9.0.1 ซึ่งเป็นวิธีที่เกินกว่าที่เดเบียนจัดทำ

 $ pip --version
 pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python2.7/dist-packages (python 2.7)
 $ pip3 --version
 pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python3.4/site-packages (python 3.4)

2
มีประโยชน์สำหรับเมื่อpip install --upgrade pipล้มเหลว
Aneuway

ถ้าฉันสามารถโหวตได้คำตอบนี้สองสามครั้งฉันจะ นี่เพิ่งแก้ไขปัญหาที่ pip 9.x ล้มเหลวด้วยข้อผิดพลาด SSL โดยอัปเดตเป็น pip 10.x ดูstackoverflow.com/questions/25981703/…
Keith John Hutchison

ทีนี้ถ้าคุณยกมันขึ้นมาแม้แต่ครั้งเดียวฉันก็จะมีความสุข คำตอบของฉันมักจะพบจากหนึ่งหรือสองชั่วโมงของการล่าสัตว์และประสบการณ์ พูดคำถามของฉันไม่ได้ใช่ไหม ผู้คนอาจหมายถึงจริงๆ! :)
Eamonn Kenny

4

การอัพเกรด pip โดยใช้ 'การติดตั้ง pip - อัปเกรด pip ' ไม่สามารถใช้งานได้เสมอเนื่องจากปัญหาใบรับรองที่หวั่น: มีปัญหาในการยืนยันใบรับรอง SSL: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] SSL ของรุ่นโปรโตคอลการแจ้งเตือน tlsv1

ฉันชอบใช้คำสั่งหนึ่งบรรทัดสำหรับ envs เสมือน:

curl https://bootstrap.pypa.io/get-pip.py | python -

หรือถ้าคุณต้องการติดตั้งในกล่องกว้างคุณจะต้อง

curl https://bootstrap.pypa.io/get-pip.py | sudo python -

คุณสามารถตั้งค่าสถานะcurl -sหากคุณต้องการปิดเสียงเอาต์พุตเมื่อทำงานในสคริปต์อัตโนมัติ



1

เพื่อให้มันใช้งานได้สำหรับฉันฉันต้องเจาะลึกลงในไดเรกทอรี Python โดยใช้พรอมต์คำสั่ง Python (บน WIN10 จาก VS CODE) ในกรณีของฉันมันอยู่ในไดเรกทอรี "AppData \ Local \ Programs \ Python \ python35-32" ของฉัน จากนั้นฉันก็วิ่งออกคำสั่ง ...

python -m pip install --upgrade pip

สิ่งนี้ใช้ได้ผลและฉันก็สบายดี


1

เปิดพร้อมท์คำสั่งด้วยสิทธิ์ผู้ดูแลระบบแล้วทำซ้ำคำสั่ง:

python -m pip install --upgrade pip

4
สิ่งนี้ไม่เหมือนกับคำตอบที่มีอยู่หรือไม่
hkchengrex

มันเป็น แต่ฉันมีปัญหาและได้รับการแก้ไขเมื่อฉันเรียกใช้ CMD ด้วยสิทธิ์ของผู้ดูแลระบบ
MRamzan

1

pip รุ่น 10 มีปัญหา มันจะแสดงให้เห็นว่าเป็นข้อผิดพลาด:

ubuntu@mymachine-:~/mydir$ sudo pip install --upgrade pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

ทางออกคืออยู่ใน venv ที่คุณต้องการอัพเกรดแล้วเรียกใช้:

sudo myvenv/bin/pip install --upgrade pip

มากกว่าเพียงแค่

sudo pip install --upgrade pip

1

ในกรณีที่คุณใช้ venv การอัพเดท pip ใด ๆ จะทำให้การอัพเกรด pip ของระบบแทนที่จะเป็น venv pip คุณต้องอัปเกรดแพ็คเกจ bootstrapping เช่นกัน

  python3 -m pip install --upgrade pip setuptools wheel

มีปัญหาบางอย่างเกี่ยวกับ python mailist หรือ pepa น่าเสียดายที่ทุกฝ่ายผลักความรับผิดชอบออกไปเพราะnot my motorollerปัญหา
dre-hh

0

ฉันได้ติดตั้ง Python ใน C: \ Python \ Python36 ดังนั้นฉันจึงไปที่พรอมต์คำสั่งของ Windows และพิมพ์ "cd C: \ Python \ Python36 เพื่อไปยังไดเรกทอรีที่ถูกต้องจากนั้นป้อน" python -m install - อัพเกรด pip "ทั้งหมด ดี!


0

บน lap-top ของฉันกับ Windows 7 วิธีที่ถูกต้องในการติดตั้ง pip เวอร์ชั่นล่าสุดคือ:

python.exe -m pip install --upgrade pip

0

Single Line Python Program
วิธีที่ดีที่สุดที่ฉันพบคือการเขียนโปรแกรมบรรทัดเดียวที่ดาวน์โหลดและรันสคริปต์ get-pip อย่างเป็นทางการ ดูรหัสด้านล่าง

เอกสารอย่างเป็นทางการแนะนำให้ใช้ curl เพื่อดาวน์โหลดสคริปต์ get-pip แต่เนื่องจากฉันทำงานบน windows และไม่ได้ติดตั้ง curl ฉันต้องการใช้ python ในการดาวน์โหลดและเรียกใช้สคริปต์

นี่คือโปรแกรมบรรทัดเดียวที่สามารถเรียกใช้ผ่านบรรทัดคำสั่งโดยใช้ Python 3:

python -c "import urllib.request; exec(urllib.request.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

บรรทัดนี้รับสคริปต์ "get-pip.py" อย่างเป็นทางการตามบันทึกการติดตั้งและดำเนินการสคริปต์ด้วยคำสั่ง "exec"

สำหรับ Python2 คุณจะแทนที่ "urllib.request" ด้วย "urllib2":

python -c "import urllib2; exec(urllib2.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

ข้อควรระวัง
เป็นที่น่าสังเกตว่าการรันสคริปต์ python แบบสุ่มนั้นเป็นอันตรายโดยกำเนิด ด้วยเหตุผลนี้คำแนะนำอย่างเป็นทางการแนะนำให้ดาวน์โหลดสคริปต์และตรวจสอบก่อนเรียกใช้

ที่กล่าวว่าหลายคนไม่ได้ตรวจสอบรหัสและเรียกใช้มัน โปรแกรมบรรทัดเดียวนี้ทำให้ง่ายขึ้น


0

ฉันมีปัญหาที่คล้ายกันในราสเบอร์รี่ปี่

ปัญหาคือ http ต้องการ SSL ดังนั้นฉันต้องบังคับให้ใช้ https เพื่อแก้ไขข้อกำหนดนี้

sudo pip install --upgrade pip --index-url=https://pypi.python.org/simple

หรือ

sudo pip-3.2 --upgrade pip --index-url=https://pypi.python.org/simple/

0

ฉันอยู่ในสถานการณ์ที่คล้ายกันและต้องการอัปเดตแพ็คเกจ urllib3 สิ่งที่ทำงานให้ฉันคือ:

pip3 install --upgrade --force-reinstall --ignore-installed urllib3==1.25.3

-2

ง่ายมาก. ดาวน์โหลดเพียง pip จากhttps://bootstrap.pypa.io/get-pip.py บันทึกไฟล์ใน forlder หรือ dekstop ฉันบันทึกไฟล์ในไดรฟ์ D ของฉันจากนั้นพรอมต์คำสั่งของคุณนำทางไปยังโฟลเดอร์ที่คุณดาวน์โหลด pip จากนั้นพิมพ์ที่นั่น

python -get-pip.py

ภาพหน้าจอการติดตั้ง Pip

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