Neden Python 2.7 hala Ubuntu'da varsayılan Python sürümü?


32

Resmi Python belgelerine göre, Python2.7 desteği yakın zamanda bitecek.

MUHASEBE: Python 2.7, 1 Ocak 2020'de ömrünün sonuna ulaşacak. Lütfen Python'unuzu Python 2.7 bu tarihten sonra korunmayacak şekilde yükseltin. Pip'in gelecekteki bir sürümü Python 2.7'ye destek verecek. Pip içindeki Python 2 desteği hakkında daha fazla ayrıntıyı https://pip.pypa.io/tr/latest/development/release-process/#python-2-support adresinde bulabilirsiniz.

Ubuntu neden gelecek sürümlerinde Python3'ü varsayılan olarak kullanmıyor?

$ 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 paketini yükleyebilirsiniz. Sorun şu ki, bir ubuntu \ linux nane versiyonunda, bazen hala eski yazılımlar olabilir, bu yüzden yeni paketleri manuel olarak kurmak zorundasınız.
enigma

8
@enigma Bu sorunun bir kopyası değil, çünkü python3 zaten varsayılan olarak ラ ビ ナ ン ダ system sistemine yüklendi;
karel

Yanıtlar:


40

Biyonik Kunduz'un yayımlanma notlarına göre :

Python 2 artık varsayılan olarak yüklenmiyor. Python 3 3.6 olarak güncellendi. Bu, Python 2'yi ana içeren son LTS sürümüdür.

Ve yukarıdaki ifade doğrudur. Python 2, 18.04'te varsayılan olarak kurulmaz ve bundan sonra yayımlanan sürümler. Ubuntu, neredeyse tüm projelerini Python 2'den Python 3'e taşıdı. Örneğin, Disco Dingo'nun notlarına göre :

Samba 4.10.x sürümüne güncellendi ve buradaki en büyük değişikliklerden biri python3 desteği. Disco'da samba ve bağımlılıkları sadece tdb hariç, sadece şimdi python3'tür. tdb hala bir python2 paketi oluşturur, yani python-tdb, ancak samba'nın kendisi de dahil olmak üzere diğerleri yalnızca python3'tür.

Dahası, Ubuntu 18.04'ün piyasaya sürülmesinden önce bile, Ubuntu / Canonical, geliştiriciden Python 3'e geçmelerini istedi çünkü sonuç yakındı . Python Gönderen - Ubuntu Wiki :

Tüm Ubuntu / Canonical tarafından geliştirilen geliştirme, şu anda Python 3'ü hedeflemeli ve tüm yeni kodlar yalnızca Python 3 olmalıdır. Bağımlılık yığınız yüzünden bunu yapamazsanız, konuşalım.

Sisteminizde Python 2 kasıtlı olarak kurulmuş veya geliştiricisi Python 3'e taşınmamış başka bir paketin bağımlılığı olabilir gibi görünüyor. Python 2'ye bağlı paketleri çalıştırarak kontrol edebilirsiniz.

apt rdepends python

pythonÇalıştırıldığında Python 2'nin çağrılmasının nedeni , PEP 394'ün tarihsel noktalarından birinde yatıyor - Unix-Benzeri Sistemlerde "python" Komutanlığı :

pythonKomut hep çağırmak gerekir Python 2 (Python 2 kod Python 3 çalıştırıldığında zor teşhis hatalarını önlemek için).


12
Son noktayı netleştirmek için Python 3, Python 2 ile geriye dönük olarak uyumlu değildir. Bu ve Python 2'nin Python 3'ten daha fazla kütüphane desteğine sahip olmasıyla birlikte, çok sayıda geliştiricinin Python 2'ye doğrudan bir bağımlılığı olduğu anlamına gelir. Python 3 bir süredir piyasada. Ancak Python 2'nin hala bu kadar güçlü bir şekilde kullanılmasının nedeni, aslında desteklenmemesine rağmen (hala doğru hatırlıyorsam, resmi destek sona erdi). 2018). EDIT: resmi destek 2020 yılında sona erer.
searchengine27

8
“... Python 2'nin Python 3'ten daha çok kütüphane desteği olduğu gerçeği…” - Bunun için bir kaynağınız var mı? Artık Python 3'ü desteklemeyen kütüphanelerle nadiren karşılaşıyorum ve aslında bazıları Python 2 için desteği bırakıyor! (Örneğin, popüler bir Python web çerçevesi olan Django, Python 2'yi üç sürüm için desteklememiştir .) İfadeniz beş yıl önce mantıklıydı, ancak bugün bu genellemeyi istatistiklerle desteklemeden yapabileceğinizi sanmıyorum. .
mart

7
@ searchengine27 Kütüphane içerisindeki faktörleri desteklediğini sanmıyorum. Geriye dönük uyumluluk kaygısı, dünyanın başlaması #!/usr/bin/pythonveya eşdeğeri olan, olması halinde kırılacak rastgele komut dosyaları ile pythondoludur python3, oysa Python 3'e bağlı rastgele komut dosyalarının başlaması daha muhtemeldir #!/usr/bin/python3.
James_pic

1
@ searchengine27 Uzun zaman önce, en yaygın bağımlılıkları ve (o sırada berbat olan) python3 durumlarını listeleyen bir "Utanç Python3 duvarı" web sitesi yapıldı. Ancak, neredeyse tüm yaygın bağımlılıkların göç ettiği ve göç etmeyenlerin birçoğunun öldüğü için Python 3 Süper Güçler Duvarı olarak değiştirildiği yıllar oldu (zaten web sitesi Nisan 2018'den beri güncellenmedi. python3 özelliklidir).
Giacomo Alzetta

4
Sadece ek olarak: Python Software Foundation 2020 yılında Python 2 koruyarak duracak gerçeği anlamına gelmez Kanonik Aslında 2020 yılında Python 2 koruyarak duracağını, bütün mesele Linux kullanmanın dağılımını saygın satıcıdan olmasıdır tüm dağıtımdaki paketler ("ana" depo anlamına gelen Debian / Ubuntu için) , orijinal yukarı akış paketinin destek durumundan bağımsız olarak , dağıtım sürümünün tüm ömrü boyunca korunacaktır . Başka bir deyişle, Ubuntu 19.04'teki Python 2 paketi, Ubuntu 19.04 olduğu sürece korunacaktır.
Jörg W Mittag

0

Bildiğim kadarıyla, sadece arch linux yaptı: python3varsayılan pythonkomuttan çağırmak için . PEP 394 önerisine rağmen .

Bu değiştirilebilir /usr/binarasındaki bağlantıları yeniden tanımlayarak python, pythonXve pythonX.Y. Ancak, tüm python2 scriptlerinizin açık bir kabuk patlaması yapması için zorunlu olacağı için, birçok hatayla baş etmeye hazır olun:

#!/usr/bin/env python2

Eski senaryolarda nadiren kullanılan kabuk çarpması.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.