จะติดตั้ง pip สำหรับ Python 3.6 บน Ubuntu 16.10 ได้อย่างไร


40

ฉันต้องการเริ่มโดยชี้ให้เห็นว่าคำถามนี้อาจดูเหมือนซ้ำกัน แต่ไม่ใช่ คำถามทั้งหมดที่ฉันเห็นที่นี่ใน Ask Ubuntu เกี่ยวกับ pip สำหรับ Python 3 และฉันกำลังพูดถึง Python 3.6 ขั้นตอนที่ใช้ไปแล้วจะไม่ทำงานกับ Python 3.6

  1. ผมได้ชัดเจน Ubuntu 16.10 ภาพจากร้านค้านักเทียบท่าอย่างเป็นทางการ
  2. วิ่ง apt-get update
  3. วิ่ง apt-get install python3.6
  4. วิ่ง apt-get install python3-pip
  5. วิ่ง pip3 install requests bs4
  6. วิ่ง python3.6 script.py

ได้ModuleNotFoundErrorด้านล่าง:

 Traceback (most recent call last):
    File "script.py", line 6, in <module>
     import requests
 ModuleNotFoundError: No module named 'requests'

Python และ pip's ฉันมีในเครื่อง:

python3
python3.5
python3.5m
python3.6
python3m
python3-config
python3.5-config
python3.5m-config
python3.6m
python3m-config  

pip
pip3
pip3.5

คำตอบ:


43

คำตอบนี้จะถือว่าคุณได้python3.6ติดตั้งแล้ว สำหรับpython3.7แทนที่ด้วย3.6 3.7ใช้python3.8แทนที่3.6ด้วย3.8แต่อาจจำเป็นต้องมีpython3.8-distutilsแพ็คเกจก่อน

ติดตั้งด้วย sudo

ในเรื่องเกี่ยวกับการติดตั้งการpipใช้curl(แทนwget) หลีกเลี่ยงการเขียนไฟล์ลงดิสก์

curl https://bootstrap.pypa.io/get-pip.py | sudo -H python3.6

การ-Hตั้งค่าสถานะมีความจำเป็นอย่างเห็นได้ชัดsudoเพื่อป้องกันข้อผิดพลาดเช่นต่อไปนี้เมื่อติดตั้ง pip สำหรับล่ามไพ ธ อนที่อัพเดต:

ไดเรกทอรี '/home/someuser/.cache/pip/http' หรือไดเรกทอรีหลักไม่ได้เป็นของผู้ใช้ปัจจุบันและแคชถูกปิดการใช้งาน โปรดตรวจสอบการอนุญาตและเจ้าของไดเรกทอรีนั้น หากดำเนินการ pip ด้วย sudo คุณอาจต้องการแฟล็ก -H ของ sudo

ไดเรกทอรี '/home/someuser/.cache/pip' หรือไดเรกทอรีหลักไม่ได้เป็นของผู้ใช้ปัจจุบันและล้อแคชถูกปิดการใช้งาน ตรวจสอบสิทธิ์และเจ้าของไดเรกทอรีนั้น หากดำเนินการ pip ด้วย sudo คุณอาจต้องการแฟล็ก -H ของ sudo

การติดตั้งโดยไม่ต้อง sudo

curl https://bootstrap.pypa.io/get-pip.py | python3.6 - --user

บางครั้งอาจให้คำเตือนเช่น:

คำเตือน: วงล้อสคริปต์ถูกติดตั้งใน '/home/ubuntu/.local/bin' ซึ่งไม่ได้อยู่ใน PATH พิจารณาเพิ่มไดเรกทอรีนี้ลงใน PATH หรือถ้าคุณต้องการที่จะระงับคำเตือนนี้ให้ใช้ --no-warn-script-location

การตรวจสอบ

หลังจากนี้pip, pip3และpip3.6ทั้งหมดจะสามารถคาดว่าจะชี้ไปที่เป้าหมายเดียวกัน:

$ (pip -V && pip3 -V && pip3.6 -V) | uniq
pip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)

แน่นอนคุณสามารถใช้python3.6 -m pipเช่นกัน

$ python3.6 -m pip -V
pip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)

4
สคริปต์ดูเหมือนจะสมมติว่าpython3.6มีการตั้งค่าเครื่องมือติดตั้ง / ติดตั้งง่าย ด้วยเหตุนี้มันจึงไม่ได้ผลสำหรับฉัน ฉันสิ้นสุดการใช้curl https://bootstrap.pypa.io/ez_setup.py -o - | python3.6 && python3.6 -m easy_install pip
FirefoxMetzger

ฉันติดตั้งpython3.6และpython3.6-devจากppa:jonathonf/python-3.6Ubuntu 14.04 ฉันไม่แน่ใจว่าฉันเพียงแค่ลืม setuptools หรือถ้ามันพัง แต่มันไม่ได้ทำงานในเวลา
FirefoxMetzger

มันไม่ได้ปลอมคำตอบของคุณในทางใดทางหนึ่ง =) มันเป็นเพียงการเพิ่มในกรณีที่ทุกคนประสบปัญหาเดียวกัน (หวังว่าผิดปกติ)
FirefoxMetzger

@ABB ถ้าผมต้องการที่จะpip -Vเป็นpython 2.7และpip3 -V && pip3.6 -Vจะเป็นpython 3.6วิธีการที่ฉันจะทำอย่างไร
Benyamin Jafari

1
คุณสามารถใช้wget -O -สตรีมผลลัพธ์เพื่อ stdout ได้เช่นกัน:wget -O - https://bootstrap.pypa.io/get-pip.py | sudo -H python3.6
ingomueller.net

16

ฉันได้รับคำตอบเกี่ยวกับ stackoverflow

ที่มา: https://stackoverflow.com/a/44254088/1812319

สมมติว่าคุณมีระบบที่ใช้งาน Ubuntu 16.04, 16.10 หรือ 17.04 และคุณต้องการให้ Python 3.6 เป็น Python เริ่มต้น

หากคุณใช้ Ubuntu 16.04 LTS คุณจะต้องใช้ PPA:

sudo add-apt-repository ppa:jonathonf/python-3.6  # (only for 16.04 LTS)

จากนั้นให้เรียกใช้สิ่งต่อไปนี้ (สามารถใช้งานได้ใน 16.10 และ 17.04):

sudo apt update
sudo apt install python3.6
sudo apt install python3.6-dev
sudo apt install python3.6-venv
wget https://bootstrap.pypa.io/get-pip.py
sudo python3.6 get-pip.py
sudo ln -s /usr/bin/python3.6 /usr/local/bin/python3
sudo ln -s /usr/local/bin/pip /usr/local/bin/pip3

# Do this only if you want python3 to be the default Python
# instead of python2 (may be dangerous, esp. before 2020):
# sudo ln -s /usr/bin/python3.6 /usr/local/bin/python

เมื่อคุณทำตามข้างต้นทั้งหมดแล้วคำสั่งเชลล์ต่อไปนี้ควรระบุPython 3.6.1(หรือ Python 3.6 เวอร์ชันล่าสุด):

python --version   # (this will reflect your choice, see above)
python3 --version
$(head -1 `which pip` | tail -c +3) --version
$(head -1 `which pip3` | tail -c +3) --version

1
"ไม่มีโมดูลชื่อ pip"
เต่าน่ารัก

ลองทำsudo apt get updateและsudo apt get upgradeก่อนที่จะใช้คำสั่ง
JChris

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