สำหรับครอบครัว Ubuntu, ผู้ใช้ Debian, Linux Mint
ด้วยคำอธิบายของ Anthony ด้านบนคุณสามารถเก็บ pip ระบบดั้งเดิมของคุณ (ใน / usr / bin / และ dist-packages /) และลบ pip ที่ติดตั้งด้วยตนเอง (ใน ~ / .local /) เพื่อแก้ไขข้อขัดแย้ง:
$ python3 -m pip uninstall pip
Ubuntu / Debian pip v8.1.1 (16.04) จากpython3-pip
แพ็คเกจ debian (ดู$ pip3 -V
) แสดงผลการค้นหาเดียวกับ pip v10.0.1 ล่าสุดและติดตั้งโมดูลล่าสุดจาก PyPI แต่ก็มีการทำงานpip
คำสั่ง (แล้วใน $ PATH) บวกที่ดี--user
ตัวเลือก patched ตามค่าเริ่มต้นตั้งแต่ปี 2016 กำลังมองหาที่บันทึกประจำรุ่น pip , รุ่นใหม่ส่วนใหญ่จะเกี่ยวกับการแก้ไขข้อผิดพลาดกรณีการใช้งานที่เฉพาะเจาะจงและคุณสมบัติใหม่บางอย่างเพื่อไม่ทุกคนต้องรีบอัพเกรด pip แค่นี้ และ pip 10 ใหม่สามารถปรับใช้กับ Python virtualenvs ได้
แต่ไม่ว่าจะเป็น pip ระบบปฏิบัติการของคุณอนุญาตให้ติดตั้งโมดูล Python ทั่วไปได้อย่างรวดเร็ว (รวมถึง numpy) ด้วย APT โดยไม่จำเป็นต้องใช้ pip เช่น:
$ sudo apt install python3-numpy python3-scipy
(ด้วยการพึ่งพาระบบ)
$ sudo apt install python3-pip
(pip พึ่งพาDebian, เก่ากว่าเล็กน้อย แต่ไม่สำคัญ)
การแจ้งเตือนทางไวยากรณ์อย่างรวดเร็ว apt (โปรดดูman apt
รายละเอียด):
$ sudo apt update
(เพื่อซิงค์ไฟล์ดัชนีแพ็คเกจของ Ubuntu จากแหล่งข้อมูลล่าสุด)
$ apt search <python-package-name>
(ค้นหาข้อความทั้งหมดในแพ็คเกจที่มีทั้งหมด)
$ apt show <python-package-name>
(แสดงรายละเอียดแพ็คเกจโดยละเอียด)
$ sudo apt install <python-package-name>
ชื่อแพ็กเกจนำหน้าด้วยpython-
สำหรับ Python 2; และนำหน้าด้วยpython3-
สำหรับ Python 3 (เช่น python3-pandas) มีหลายพันและพวกเขาได้รับการทดสอบการรวมภายใน Debian และ Ubuntu ถ้าคุณไม่ต้องการติดตั้งที่ระดับต่อผู้ใช้ ( pip install --user
ตัวเลือก) หรือภายใน virtualenv / venv apt อาจเป็นสิ่งที่คุณต้องการ แพคเกจระบบเหล่านี้สามารถเข้าถึงได้จาก envs เสมือนเช่นกันเนื่องจากvirtualenvจะย้อนกลับไปที่การใช้ libs ของระบบในการนำเข้าถ้า envs ของคุณไม่มีสำเนาของโมดูล --user
โมดูลที่ผู้ใช้กำหนดเองซึ่งติดตั้งเอง (พร้อม pip ) ~/.local/lib
จะแทนที่ด้วยเช่นกัน
หมายเหตุเนื่องจากนี่เป็นการติดตั้งทั่วทั้งระบบคุณจึงไม่จำเป็นต้องลบออกบ่อยครั้ง (จำเป็นต้องคำนึงถึงการพึ่งพาระบบปฏิบัติการ) นี้จะสะดวกสำหรับแพคเกจที่มีการพึ่งพาระบบจำนวนมาก (เช่นกับ SciPy หรือ matplotlib) เช่น APT จะติดตามและให้ libs ระบบทั้งหมดที่จำเป็นและนามสกุล C, ขณะที่ pip คุณมีการค้ำประกันดังกล่าว
อันที่จริงสำหรับแพคเกจ Python ทั่วทั้งระบบ (ตรงกันข้ามกับต่อผู้ใช้, ระดับ dir ที่บ้านหรือต่ำกว่า), Ubuntu คาดว่าจะใช้ตัวจัดการแพคเกจ APT (แทนที่จะเป็นsudo pip
) เพื่อหลีกเลี่ยงการทำลาย OS: sudo pip3
กำหนดเป้าหมาย/usr/lib/python3/dist-packages
ไดเรกทอรีเดียวกันที่ APT จัดเก็บ OS โมดูลที่มีความสำคัญ การเผยแพร่ Debian / Ubuntu ล่าสุดนั้นขึ้นอยู่กับ Python 3 อย่างมากดังนั้นโมดูลที่ติดตั้งไว้ล่วงหน้าจะได้รับการจัดการโดยapt
และไม่ควรเปลี่ยนแปลง
ดังนั้นหากคุณใช้pip3 install
คำสั่งโปรดตรวจสอบให้แน่ใจว่ามันทำงานในสภาพแวดล้อมเสมือน dev แบบแยกเช่นกับvirtualenv ( sudo apt install python3-virtualenv
) หรือด้วย Python3 ในตัว ( -m venv
) หรือที่ระดับต่อผู้ใช้ ( --user
ตัวเลือก pip เป็นค่าเริ่มต้นใน Ubuntu ที่จัดไว้ให้ pip ตั้งแต่ปี 2559) แต่ไม่ใช่ทั้งระบบ (ไม่เคยsudo pip3
!) เนื่องจาก pip รบกวนการทำงานของตัวจัดการแพคเกจ APT และอาจส่งผลต่อ Ubuntu OSส่วนประกอบของเมื่อโมดูลหลามที่ใช้ในระบบมีการเปลี่ยนแปลงโดยไม่คาดคิด โชคดี!
พี S. สิ่งที่กล่าวมาทั้งหมดนี้ใช้สำหรับวิธี 'อุดมคติ' (วิธี Debian / Ubuntu)
ถ้าคุณยังต้องการใช้ pip3 v10 ใหม่โดยเฉพาะมีวิธีแก้ไขปัญหาด่วน 3 วิธี:
- เพียงเปิดเซสชัน bash ใหม่ (แท็บเทอร์มินัลใหม่หรือประเภท
bash
) - และ pip3 v10 จะพร้อมใช้งาน (ดูpip3 -V
) pip3 v8 ของเดเบียนยังคงติดตั้ง แต่เสีย หรือ
- คำสั่ง
$ hash -d pip3 && pip3 -V
เพื่อรีเฟรชชื่อพา ธ pip3 ใน $ PATH pip3 v8 ของเดเบียนยังคงติดตั้ง แต่เสีย หรือ
- คำสั่ง
$ sudo apt remove python3-pip && hash -d pip3
ถอนการติดตั้ง pip3 v8 ของเดเบียนโดยสมบูรณ์เพื่อสนับสนุน pip3 v10 ใหม่ของคุณ
หมายเหตุ:คุณจะต้องเพิ่มการ--user
ตั้งค่าสถานะไปยัง pip ใด ๆ ที่ไม่ใช่ debian ยกเว้นว่าคุณอยู่ใน virtualenv! (ปรับใช้แพ็กเกจหลามไป~/.local/
เป็นค่าเริ่มต้นใน debian / ubuntu ที่ให้ไว้ python3-pip และ python-pip ตั้งแต่ 2016) การใช้งาน pip 10 ทั้งระบบของคุณนอก virtualenv นั้นไม่รองรับโดย Ubuntu / Debian จริงๆ ไม่เคยsudo pip3
!
รายละเอียดเพิ่มเติม:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100