การอัพเดต Python บนระบบ Ubuntu


78

ฉันต้องการอัปเดต Python build บนกล่อง Linux ของฉัน แต่วิธีเดียวที่ฉันรู้วิธีทำคือถอนการติดตั้งเวอร์ชันปัจจุบันและติดตั้งใหม่ ระบบของฉันทันสมัยแล้ว (ฉันอัปเดตเมื่อวานนี้) ฉันต้องการทราบว่ามีวิธีอัปเดตโปรแกรมเฉพาะจากบรรทัดคำสั่งหรือsudo apt-get update <program-name>ไม่ ฉันรู้ว่าคำสั่งนี้ไม่มีอยู่ แต่ฉันหวังว่าจะมีสิ่งที่เทียบเท่า


หากระบบของคุณเป็นรุ่นล่าสุดดังนั้น Python ในระบบของคุณ (ตามที่เก็บข้อมูลของคุณ) ฉันผิดหรือเปล่า?
cYrus

คำตอบ:


64

ตามที่คนอื่นระบุไว้แล้ว bare sudo apt-get install packageจะติดตั้งเวอร์ชันล่าสุดที่มีอยู่แทนที่อันเก่าถ้าจำเป็น

แต่ด้วยซอฟต์แวร์บางอย่าง (ซึ่งก็คือ Python) สถานการณ์นั้นค่อนข้างแตกต่างกัน บางรุ่นที่สำคัญแตกต่างกันมากและเข้ากันไม่ได้จะได้รับแพ็คเกจของตัวเอง ตัวอย่างเช่นPython 2.6 , Python 2.7 , Python 3.1ทั้งหมดอยู่ในแพ็คเกจที่แยกต่างหากบน Ubuntu

สิ่งที่สำคัญอย่างยิ่งคือข้อเท็จจริงที่ว่าหนึ่งในนโยบายของ Ubuntu คือการใช้ Python อย่างกว้างขวางสำหรับการเขียนซอฟต์แวร์สำหรับผู้ใช้ ดังนั้นในความเป็นจริงส่วนใหญ่ของระบบค่อนข้างเขียนในหลาม ในขณะนี้รหัสทำงานบน Python 2.6 - ดังนั้นรุ่นนี้จึงเป็นค่าเริ่มต้นเมื่อทำการติดตั้ง และรหัสจะไม่สามารถทำงานได้อย่างง่ายดายพูด Python 2.7 - เพราะมีความเข้ากันไม่ได้ ในการเปลี่ยนระบบเป็น Python 2.7 จะต้องมีการทำงานชิ้นหนึ่งซึ่งประกอบด้วยการอัปเดตและทดสอบสคริปต์ทั้งหมดอีกครั้ง สิ่งนี้ไม่สามารถทำได้อย่างง่ายดาย นั่นคือคุณไม่สามารถ "เปลี่ยน" ระบบของคุณเป็น Python 2.7 และลบเวอร์ชันที่เก่ากว่าได้

แต่. หากคุณไม่สนใจเกียร์แฟนซีในระบบของคุณและต้องการ Python ที่ใหม่กว่า - อย่ามองข้ามสิ่งกีดขวาง ไปและsudo apt-get install python3และรหัสสำหรับ 3.x Python อย่างกล้าหาญ; เพียงจำไว้ว่าให้เรียกใช้สคริปต์ของคุณด้วยpython3และใช้#!/usr/bin/env python3บรรทัด shebang


6
รายละเอียดยอดเยี่ยมเกี่ยวกับการทำงานเบื้องหลัง
ประสิทธิภาพ

16
sudo apt-get install python 3.3.3

นี่สำหรับหลาม (3.3.3) สำหรับเวอร์ชั่นอื่นควรใช้หมายเลขเวอร์ชั่นที่สอดคล้องกัน


4
ฉันคิดว่าช่องว่างระหว่างไพ ธ อนกับเวอร์ชั่นไม่ควรอยู่ที่นั่น sudo apt-get install python3.6ได้ผลสำหรับฉัน แต่ไม่มีผลกับ Python 3.5 แต่อย่างใด
GUI Junkie

sudo apt-get install python 3.6.1 > Note, selecting 'libghc-unix-time-dev-0.3.6-1b8cf' for regex '3.6.1' ... ข้อโต้แย้งแยกบอกให้ติดตั้งหลายแพคเกจ
Clancy Hood

3
หลังจากติดตั้งหมายเลขเวอร์ชันไพ ธ อนของฉันเหมือนกัน? อะไรคือเหตุผล?
Ramesh Pareek

ฉันใช้วิธีนี้ แต่ไม่สามารถหาตำแหน่งที่ติดตั้งได้ (เช่นวิธีเปิด 3.7 เชลล์) @RameshPareek นี่อาจเป็นปัญหาของคุณด้วย ดูเหมือนจะไม่อยู่ใน / usr / bin python is already the newest version (2.7.12-1~16.04). python set to manually installed.ความคิดใด ๆ
Bjorks แฟนหมายเลขหนึ่ง

10
sudo apt-get install python3.6

สิ่งนี้จะติดตั้ง python 3 ใน linux พร้อมกับ python 2 เพื่อเข้าถึง python 3 หลังจากที่คุณเปิด terminal

python3

2
เป็นการทำซ้ำคำตอบอื่นและไม่เพิ่มเนื้อหาใหม่ โปรดอย่าโพสต์คำตอบเว้นแต่ว่าคุณมีสิ่งใหม่ที่จะมีส่วนร่วม
DavidPostill

3
ขอโทษฉันแค่อยากจะเขียนคำสั่งเพื่อรับใหม่
G-Ox7cd

6
ถ้าฉันเรียกใช้ฉันจะได้รับE: Unable to locate package python3.6 E: Couldn't find any package by glob 'python3.6' E: Couldn't find any package by regex 'python3.6'
Kajsa

1
sudo add-apt-repository ppa: deadsnakes / ppa -y && sudo apt-get update
ski_squaw

E: Unable to locate package python3.6
Dims

4

คุณใกล้จะนึกถึงคำสั่งเช่นsudo apt-get update(ซึ่งเป็นคำสั่งจริง แต่ไม่ได้ทำตามที่คุณต้องการ)

ในการอัพเกรด Python และทุกสิ่งที่คุณติดตั้งให้ทำตามคำสั่ง:

sudo apt-get upgrade

ขอบคุณ แต่ฉันรู้แล้วเกี่ยวกับคำสั่ง update ซึ่งเป็นสาเหตุที่ฉันโพสต์ข้อเท็จจริงที่ว่าระบบของฉันเป็นปัจจุบันแล้ว ฉันหวังว่าจะพบคำสั่งที่สามารถกำหนดเป้าหมายไปที่แอพเฉพาะ
ประสิทธิภาพ

apt จะไม่อัปเกรดอะไรเป็นปัจจุบันดังนั้นมันจึงไม่สร้างความแตกต่าง p
Journeyman Geek

สหกรณ์ต้องการที่จะปรับปรุงหลามเฉพาะ การบอกให้พวกเขาอัปเดตแพ็คเกจทั้งหมดที่พวกเขามีคือคำแนะนำที่ขี้เกียจและไม่ดี
Przemek D

3

จากเว็บไซต์น้องสาวของเรา: https://askubuntu.com/questions/44122/how-to-upgrade-a-single-package-using-apt-get

คำสั่งเหล่านี้แต่ละคำสั่งอัพเดตโดยการติดตั้งซึ่งน่าจะใช้ได้ดีในหลายกรณี แต่อาจไม่ใช่สิ่งที่คุณกำลังมองหาในกรณีเฉพาะ

หากคุณต้องการอัพเกรดแพ็คเกจเฉพาะและหากติดตั้งไว้แล้วให้ใช้คำสั่ง:

sudo apt-get install --only-upgrade packagename

3

ในกรณีที่คุณต้องการอัพเกรดแพ็คเกจ python เวอร์ชันรองเช่น 2.7.11+ t0 2.7.12 sudo apt-get install python2.7ควรทำเพื่อคุณ


2

pyenv อาจเป็นตัวเลือกที่ดีสำหรับคุณ: https://github.com/yyuu/pyenv


ในเรื่องที่เกี่ยวกับคำตอบของ @ ulidtkoทางเลือกที่เป็นไปได้ในการแทนที่ระบบไพ ธ อนทั้งหมดอาจใช้สภาพแวดล้อมแบบแยกกับรุ่นไพ ธ อนที่คุณต้องการ สิ่งนี้คล้ายกับ "virtual environment" แต่สำหรับไพ ธ อนเอง ฉันเคยใช้สิ่งนี้ในอดีตสำหรับโปรเจ็กต์ดั้งเดิมที่รันบน python 2.6 เช่นเดียวกับเมื่ออัพเกรดจาก python เป็น python3 เวอร์ชันดั้งเดิม


ฉันไม่คุ้นเคยกับพื้นที่นี้ แต่คุณช่วยอธิบายได้ว่าสิ่งนี้ตอบคำถามและแก้ปัญหาได้อย่างไร
Ben N

1
ในเรื่องที่เกี่ยวกับคำตอบของ @ ulidtko ( superuser.com/a/241903/152143 ) ทางเลือกที่เป็นไปได้ในการแทนที่ระบบไพ ธ อนทั้งหมดอาจใช้สภาพแวดล้อมแบบแยกกับรุ่นไพ ธ อนที่คุณต้องการ สิ่งนี้คล้ายกับ "virtual environment" แต่สำหรับไพ ธ อนเอง ฉันเคยใช้สิ่งนี้ในอดีตสำหรับโปรเจ็กต์ดั้งเดิมที่รันบน python 2.6 เช่นเดียวกับเมื่ออัพเกรดจาก python เป็น python3 เวอร์ชันดั้งเดิม
nicefinly

1
apt-get install python

ฉันเชื่อว่านี่น่าจะใช้ได้ คุณจะต้องเปลี่ยน 'python' ให้ตรงกับชื่อแพ็คเกจที่เหมาะสมในที่เก็บของคุณอย่างชัดเจน


1

อย่างที่เราทราบกันดีว่า Python มาพร้อมกับเวอร์ชั่น 3.5 ดังนั้นจึงง่ายมากที่จะอัปเดต Python 2.7 (ซึ่งโดยปกติแล้วจะอยู่ใน Ubuntu 16.04) เป็น Python 3.5

ทำตามขั้นตอนต่อไปนี้:

  1. เปิดเทอร์มินัล
  2. เป็นผู้ใช้รูทโดยใช้คำสั่ง sudo
  3. ใช้รหัสด้านล่างเพื่ออัปเดต Python 2.7 เป็น 3.5

    sudo apt-get install python3.5

  4. คุณจะถูกขออนุญาตจากคุณจากนั้นให้ตัวเลือก Y

  5. รอจนกระบวนการเสร็จสมบูรณ์
  6. ล้างหน้าจอโดยใช้คำสั่ง clear
  7. ตรวจสอบเวอร์ชั่นของไพ ธ อนด้วยคำสั่งด้านล่าง

    หลาม - รุ่น


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

และมันก็ไม่ง่ายอย่างนี้จะไม่อัปเดตลิงก์สัญลักษณ์อย่างถูกต้องดังนั้นคุณจะได้ 3.4 และ 3.5 เคียงข้างกัน Python2 โดยทั่วไปแล้วจะมี python3 อยู่แล้วเราไม่อัปเกรด Python2 เป็น Python3 เราย้ายงานของเรา
mckenzm

0

ในกรณีเดียวที่คุณใช้รุ่น LTS ไพ ธ อนของคุณอาจอยู่ในเวอร์ชั่นรองพูด 2.7.5 แทน 2.7.10

ความเป็นไปได้อย่างหนึ่งคือการอัพเกรดระบบ :

  • ตั้งprompt=normalอยู่ใน/etc/update-manager/release-upgrades
  • อัพเกรดระบบ
    • บนบรรทัดคำสั่งคุณสามารถพิมพ์sudo do-release-upgradeเพื่อให้ตัวจัดการอัปเกรดทำงานเพื่ออัปเกรดเป็นเวอร์ชั่นล่าสุด (= non-LTS)
    • โซลูชัน GUI ใช้Update Manager

เช่นเคยเมื่ออัปเกรดโปรดดูบันทึกย่อประจำรุ่นเนื่องจากการอัปเกรดอาจทำให้ระบบของคุณเสียหายในบางกรณีดูความคิดเห็นของ @ Gino


เพื่อนฉันลองทำการเปลี่ยนแปลงของคุณและมันก็ทำให้ระบบ Ubuntu 14.04 ของฉันพัง ! โดยพื้นฐานแล้วมันพยายามอัปเดตจาก 14.04 เป็น Ubuntu 15 และไม่สามารถทำได้สำเร็จโดยปล่อยให้ระบบของฉันอยู่ในสถานะครึ่งทางที่การลงชื่อเข้าใช้แบบกราฟิกไม่ทำงานอีกต่อไป - เช่นฉันจะลงชื่อเข้าใช้ผ่านการเข้าสู่ระบบแบบกราฟิก ฉันกลับไปสู่การเข้าสู่ระบบกราฟิกเดียวกัน เพียงแค่ใช้เวลาชั่วโมงที่ผ่านมา + ติดตั้ง Ubuntu 14.04 ลงบนเครื่องของฉันในการแก้ไขปัญหาทำลายเจตนาของการแก้ปัญหา
Gino

@Gino: ขอบคุณสำหรับความคิดเห็น คุณเคยดูaskubuntu.com/questions/612973/… , askubuntu.com/questions/223501/?hl=thและบันทึกย่อประจำรุ่นแล้วหรือยัง มีปัญหากับ "ไดรเวอร์ fglrx ของ AMD" คุณต้องการความช่วยเหลืออื่น ๆ หรือไม่?
serv-inc

ฉันคิดว่าข้อเสนอแนะของคุณเพื่อหลีกเลี่ยงการตรวจสอบความปลอดภัยตามปกติดังนั้นการอนุญาตให้อัปเกรดเป็นรุ่นที่ไม่ใช่ LTS นั้นเต็มไปด้วยอันตราย ถึงวันนี้ฉันไม่รู้ว่าทำไมการอัปเกรดล้มเหลวเนื่องจากไม่แสดงข้อความข้อผิดพลาดที่สามารถวินิจฉัยได้ ฉันกลับลงเอยด้วยระบบที่ใช้งานไม่ได้แล้ว หากฉันจำได้อย่างถูกต้องฉันจะทำการติดตั้ง Ubuntu อีกครั้งด้วยการตั้งค่าบางอย่างที่สามารถกู้คืนระบบส่วนใหญ่ของฉันได้ และในฐานะที่เป็นบันทึกย่อฉันเป็นโปรแกรมเมอร์มืออาชีพดังนั้นโดยทั่วไปฉันรู้วิธีของฉันรอบระบบลินุกซ์
Gino

@Gino: นี่เป็นขั้นตอนมาตรฐานในการเปลี่ยนจาก LTS เป็น non-LTS มันคือ [เปลี่ยน] ระดับการรับรู้ของรุ่นใหม่ หนึ่งสามารถตั้งค่านี้จะ "สนับสนุน" (ปกติ) รุ่น "ระยะยาวเท่านั้น" (LTS) เผยแพร่หรือแม้กระทั่ง "ไม่มีอะไร" (ไม่มีการอัพเกรดหลัก). "สำหรับคำพูดดูaskubuntu.com/questions/240160/...มันใช้ตัวจัดการการอัปเกรดระบบ แต่ในกรณีของคุณการอัปเกรด (ค่าเริ่มต้น) ไม่ทำงานซึ่งอาจเกิดจากไดรเวอร์กราฟิก buggy (ดูลิงก์ด้านบน)
serv-inc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.