ทำไม Python 2.7 ยังเป็น Python เวอร์ชั่นเริ่มต้นใน Ubuntu


32

ตามเอกสารอย่างเป็นทางการของ Python การสนับสนุน Python2.7 จะสิ้นสุดลงในอนาคต

DEPRECATION: Python 2.7 จะหมดอายุในวันที่ 1 มกราคม 2020 โปรดอัปเกรด Python ของคุณเนื่องจาก Python 2.7 จะไม่ได้รับการดูแลหลังจากวันที่ดังกล่าว pip รุ่นต่อไปในอนาคตจะลดการสนับสนุน Python 2.7 รายละเอียดเพิ่มเติมเกี่ยวกับการสนับสนุน Python 2 ใน pip สามารถดูได้ที่https://pip.pypa.io/en/latest/development/release-process/#python-2-support

เหตุใด Ubuntu จึงไม่ใช้ Python3 เป็นค่าเริ่มต้นในเวอร์ชันที่กำลังจะมาถึง

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="19.04 (Disco Dingo)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 19.04"
VERSION_ID="19.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=disco
UBUNTU_CODENAME=disco
$ python
Python 2.7.16 (default, Apr  6 2019, 01:42:57) 
[GCC 8.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.

2
คุณสามารถติดตั้งแพ็คเกจ python3.7 ปัญหาคือภายในเวอร์ชั่น ubuntu \ linux mint มีบางครั้งยังมีโปรแกรมเก่าอยู่ดังนั้นคุณต้องติดตั้งแพ็คเกจใหม่ด้วยตนเอง
ปริศนา

8
@enigma ไม่ใช่คำถามที่ซ้ำกันเพราะ python3 ติดตั้งอยู่แล้วในระบบของラビナンダンโดยปริยายดังนั้นเขาจึงติดตั้งทั้ง python และ python3 ไว้ด้วยกัน
karel

คำตอบ:


40

ตามบันทึกประจำรุ่นของ Bionic Beaver :

Python 2 ไม่ได้ติดตั้งตามค่าเริ่มต้นอีกต่อไป Python 3 ได้รับการอัปเดตเป็น 3.6 นี่เป็นรุ่นล่าสุดของ LTS ที่รวม Python 2 ไว้ในหลัก

และข้อความข้างต้นเป็นจริง Python 2 ไม่ได้ติดตั้งตามค่าเริ่มต้นใน 18.04 และรุ่นที่วางจำหน่ายหลังจากนั้น Ubuntu ได้ย้ายโปรเจ็กต์เกือบทั้งหมดจาก Python 2 ไปเป็น Python 3 แล้วตัวอย่างเช่นจากหมายเหตุของดิสโก้ Dingo :

Samba ได้รับการอัพเดตเป็นเวอร์ชั่น 4.10.x และหนึ่งในการเปลี่ยนแปลงครั้งใหญ่ที่นี่คือการสนับสนุนpython3 ในดิสโก้, แซมบ้าและการอ้างอิงของมันคือ python3 ทั้งหมดในขณะนี้, ยกเว้น tdb tdb ยังคงสร้างแพ็คเกจ python2 คือ python-tdb แต่ส่วนอื่น ๆ ทั้งหมดรวมถึง samba นั้นเป็น python3 เท่านั้น

นอกจากนี้แม้ก่อนที่จะปล่อยของ Ubuntu 18.04 ที่อูบุนตู / Canonical เริ่มถามนักพัฒนาที่จะย้ายไปหลาม 3 เพราะท้ายที่สุดก็คือที่อยู่ใกล้กับ จากPython - Ubuntu Wiki :

การพัฒนาที่ขับเคลื่อนด้วย Ubuntu / Canonical ทั้งหมดควรกำหนดเป้าหมายเป็น Python 3 ในขณะนี้และรหัสใหม่ทั้งหมดควรเป็น Python 3 เท่านั้น หากคุณไม่สามารถทำสิ่งนี้ได้เนื่องจากกองการพึ่งพาของคุณลองคุยกัน

ดูเหมือนว่าในระบบของคุณติดตั้ง Python 2 โดยเจตนาหรืออาจเป็นการอ้างอิงของแพ็คเกจอื่น ๆ ที่นักพัฒนาซอฟต์แวร์ไม่ได้ย้ายไปยัง Python 3 คุณสามารถตรวจสอบแพ็คเกจที่ขึ้นอยู่กับ Python 2 ได้ด้วยการรัน

apt rdepends python

สาเหตุที่ Python 2 ถูกเรียกใช้เมื่อpythonมีการเรียกใช้งานอยู่ในหนึ่งในจุดทางประวัติศาสตร์ของPEP 394 - คำสั่ง "python" บนระบบ Unix-Like :

pythonคำสั่งควรวิงวอนงูหลาม 2 (เพื่อป้องกันข้อผิดพลาดที่ยากต่อการวินิจฉัยเมื่องูหลาม 2 รหัสคือทำงานบนหลาม 3)


12
เพื่อชี้แจงประเด็นสุดท้าย Python 3 ไม่สามารถใช้ร่วมกับ Python 2 ย้อนหลังได้และเมื่อรวมกับความจริงที่ว่า Python 2 มีการสนับสนุนห้องสมุดมากกว่า Python 3 หมายความว่านักพัฒนาจำนวนมากยังคงต้องพึ่งพา Python 2 โดยตรง Python 3 ได้รับการออกในขณะนี้ แต่จริงๆแล้วมันเป็นห้องสมุดที่เป็นเหตุผลว่าทำไม Python 2 ยังคงถูกใช้อย่างมากถึงแม้ว่ามันจะไม่ได้รับการสนับสนุนอีกต่อไป (ถ้าฉันจำได้อย่างถูกต้องการสนับสนุนอย่างเป็นทางการสิ้นสุดลง 2018) แก้ไข: การสนับสนุนอย่างเป็นทางการสิ้นสุดลงในปี 2020
searchengine27

8
"... ความจริงที่ว่า Python 2 ได้รับการสนับสนุนจากห้องสมุดมากกว่า Python 3 ... " - คุณมีที่มาหรือไม่ ฉันไม่ค่อยพบห้องสมุดอีกต่อไปที่ไม่รองรับ Python 3 และอันที่จริงแล้วบางคนก็กำลังลดการสนับสนุน Python 2! (ตัวอย่างเช่น Django กรอบงานเว็บ Python ยอดนิยมไม่สนับสนุน Python 2 สำหรับการเปิดตัวสามครั้ง) คำสั่งของคุณสมเหตุสมผลเมื่อห้าปีที่แล้ว แต่วันนี้ฉันไม่คิดว่าคุณจะสามารถทำแนวทั่วไปโดยไม่ต้องสำรองข้อมูล .
marcelm

7
@ searchengine27 ฉันไม่คิดว่าห้องสมุดจะสนับสนุนปัจจัยต่างๆ ความกังวลหลังเข้ากันได้เป็นว่าโลกเป็นจมอยู่ใต้น้ำกับสคริปต์สุ่มที่เริ่มต้นด้วย#!/usr/bin/pythonหรือเทียบเท่าซึ่งจะแตกถ้าpythonกลายเป็นpython3ขณะสคริปต์สุ่มที่ขึ้นอยู่กับงูหลาม 3 #!/usr/bin/python3มีแนวโน้มที่จะเริ่มต้นด้วย
James_pic

1
@ searchengine27 นานมาแล้วมีคนสร้างเว็บไซต์ "Python3 wall of Shame" ที่แสดงรายการการพึ่งพาที่พบบ่อยที่สุดและสถานะ python3 ของพวกเขา (ซึ่งในเวลานั้นเป็นสุดซึ้ง) อย่างไรก็ตามเป็นเวลาหลายปีแล้วที่มันถูกเปลี่ยนเป็นPython 3 Wall of Superpowersเนื่องจากการพึ่งพาทั่วไปทั้งหมดได้รับการโยกย้ายแล้วและมีเพียงไม่กี่ที่ที่การโยกย้ายไม่ได้ตายไปแล้ว (เว็บไซต์ยังไม่ได้รับการอัปเดตตั้งแต่เมษายน 2018 สามารถใช้ python3 ได้)
Giacomo Alzetta

4
เช่นเดียวนอกจากนี้: ความจริงที่ว่ามูลนิธิซอฟต์แวร์หลามจะหยุดการรักษางูหลาม 2 ในปี 2020 ไม่ได้หมายความว่ายอมรับจะหยุดการรักษางูหลาม 2 ในปี 2020 ในความเป็นจริงจุดรวมของการใช้ลินุกซ์กระจายจากผู้ผลิตที่มีชื่อเสียงเป็นที่ทั้งหมดแพ็กเกจในการแจกจ่าย (สำหรับ Debian / Ubuntu ที่หมายถึงที่เก็บ "หลัก") จะได้รับการดูแลตลอดช่วงอายุการใช้งานทั้งหมดของรีลีสการกระจายโดยไม่คำนึงถึงสถานะการสนับสนุนของแพ็คเกจอัพสตรีมดั้งเดิม กล่าวอีกนัยหนึ่งแพ็คเกจ Python 2 ใน Ubuntu 19.04 จะคงอยู่ตราบใดที่ Ubuntu 19.04 เป็น
Jörg W Mittag

0

ตามความรู้ของฉันมีเพียง linux arch เท่านั้นที่ทำได้: โทรpython3จากpythonคำสั่งเริ่มต้น แม้จะมีข้อเสนอแนะPEP 394

มันสามารถเปลี่ยนแปลงได้ใน/usr/binโดยกําหนดการเชื่อมโยงระหว่างpython, และpythonX pythonX.Yแต่เตรียมรับมือกับข้อบกพร่องมากมายเนื่องจากสคริปต์ python2 ทั้งหมดของคุณจะได้รับคำสั่งให้มีการทำงานของเชลล์อย่างชัดเจน:

#!/usr/bin/env python2

เปลือกปังซึ่งมักจะใช้ในสคริปต์เก่า

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