'Python' program komutunun Python 3'ü çalıştırmasını nasıl sağlayabilirim?

Bu python program komutu Python 2'yi çalıştırır. Python 3 kullanılarak çalıştırılabilir python3 emretmek. Python 3 kullanılarak nasıl çalıştırılabilir python komuta mı?

Sistem genelinde bir paket yükleyebilirsiniz:

$ sudo apt install python-is-python3

Uyarılara bakın:ubuntu 20.04'te python-is-python3 paketi - nedir ve gerçekte ne yapar?

Basit ve güvenli bir yol, bir takma ad kullanmak olacaktır. Bunu içine yerleştirin ~/.bashrc veya ~/.bash_aliases dosya:

alias python=python3

Yukarıdakileri dosyaya ekledikten sonra çalıştırın source ~/.bashrc veya source ~/.bash_aliases.

Örneğin:

$ python --versionPython 2.7.6$ python3 --versionPython 3.4.3$ alias python=python3$ python --versionPython 3.4.3

Takma adı atlamak için command yerleşik komut:

$ command python --versionPython 2.7.6

Takma adı atlamanın başka bir yolu da kullanmaktır \ emirden önce.

$ \python --version Python 2.7.6

Geçerli kabuktaki diğer adı devre dışı bırakmak için unalias yerleşik komut:

$ unalias python$ python --versionPython 2.7.6

Üzerinde Ubuntu 20.04+ sadece yükleyin python-is-python3 paket:

sudo apt install python-is-python3

Bunun üzerine, Python 2'nin gelecekte bir şeyin bağımlılığı olarak yüklenmesini engelleyebilirsiniz apt-mark hold:

sudo apt-mark hold python2 python2-minimal python2.7 python2.7-minimal libpython2-stdlib libpython2.7-minimal libpython2.7-stdlib 

[Haziran 2016] Geçiş hakkında bilgi almak için önerilen yer resmidir Ubuntu Python sayfa.


Şuradan Ubuntu wiki:

Hem Ubuntu hem de Debian için devam eden proje hedefler Python 3'ü varsayılan yapmak için dağıtımlarda tercih edilen Python sürümü.

Bu ne öyle değil anlamına gelmek:

  • /usr/bin/python python 3'e işaret edecektir. Hayır, bu olmayacak. (meğerki MORAL 394 öngörülebilir gelecek için şüpheli olan aksini savunur). /usr/bin/python ve /usr/bin/python2 Python 2.7'ye işaret edecek ve /usr/bin/python3 desteklenen en son Python 3 sürümüne işaret edecektir.

  • Python 2 arşivden kaldırılacaktır. Hayır, bu olmayacak.. Python 2.7'nin Ubuntu'da oldukça uzun bir süre desteklenmesini ve kullanılabilir kalmasını bekliyoruz MORAL 373 2020 yılına kadar upstream hata düzeltme bakım desteği vaat ediyor.

Diğer paket bağımlılıkları nedeniyle sembolik bağlantının değiştirilmesi önerilmez, ancak "Python 3'ü dağıtımlarda varsayılan, tercih edilen Python sürümü yapmak için devam eden proje hedefleri vardır".


CLI kullanımı için, örneğin @ Radu Radeanu, Kullanıcıya bir takma ad koymanızı tavsiye ederim ~/.bashrc, .bash_aliases dosya (dahil olmak üzere farklı dosyalar ~/.bash_profile en az bir kez yüklenir, çoğunlukla organizasyon amaçlıdır, ancak platforma göre değişebilir). Piton sanal ortamlar ayrıca iyi çalışır.

Takma ad örnekleri:

alias python=python3

veya

alias python='/usr/bin/python3'

Komut dosyaları hala aşağıdaki gibi bir şey kullanmalıdır #!/usr/bin/env python3 çapraz uyumluluk için.

Kullanım env sanal ortamlarla karışık kullanım için güzeldir.

Not (@wjandrea sayesinde): takma adlar, kullanıcı ortamının değil, bash çalışma zamanının bir parçasıdır. Bu nedenle, bunlar shebang için mevcut değildir (#!). Python = python3 takma adını tercih ederseniz, bazıları program.py bir shebang olmadan, takma ad yorumlayıcısını bu şekilde çağırarak çalıştırılabilir python program.py. Kenar yumuşatma, python3'ün 3.4 ve 3.6 gibi birden çok sürümüne sahip sistemler için de yararlı olabilir.

Update: Python2 ve Python3 birbirinin yerine geçemediğinden öğrendiğim yanlış yol bu.

Komut satırı aracını deneyebilirsiniz update-alternatives.

$ sudo update-alternatives --config python

Eğer "python için alternatif yok" hatasını alırsanız, aşağıdaki komutla kendiniz bir alternatif oluşturun:

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

Yolu değiştir /usr/bin/python3 buna göre istediğiniz python sürümüne.

Ubuntu ve bu konudaki Linux dağıtımlarının geri kalanı, bir dizi uygulama ve komut için hala büyük ölçüde Python 2.7'ye bağımlıdır. Varsayılan "python" referansını Python 3 olarak değiştirirseniz.x, daha sonra bir dizi Python işlevi onaylama hataları atmaya başlayacaktır.

Örneğin, Ubuntu'da, dosyayı doğrudan düzenlemediğiniz ve shebang'ı referans olarak değiştirmediğiniz sürece, biri için 'pip' artık düzgün çalışmayacaktır '#!/usr/bin/env python2.7'. Red Hat, Fedora ve CentOS gibi RHEL (Red Hat Enterprise Linux) lezzetlerinde 'Yum' komutu da Python 2.7'ye bağlıdır.

Buradaki amacım, Python 3'e başvurmak için terminalde 'python' yazabilmeniz için onaylama işlemi hatalarını atmaya başlamak için önemli miktarda koda neden olmanızdır.x.

Terminalde 'python3' komutunu ve shebang '# komutunu kullanarak çok daha iyi durumdasınız!Python 3'ünüzde /usr/bin/env python3'.gizli dosyalar.

Yapmak

cd ~gedit .bash_aliases

o zaman ikisini de yaz

alias python=python3

veya

alias python='/usr/bin/python3'

Dosyayı kaydedin, terminali kapatın ve tekrar açın.
Bağlantı

/Usr/bin/python ve /usr/bin/pip'i kaldırmayı çok yararlı buluyorum. Bu, tüm programları "python2" ve "python3" komutlarına güvenmeye zorlar.

Bazı isteğe bağlı ve eski paketler aşağıdakilere bağlı olsa da #!/usr/bin/python çalışmak için, garip ve bazen hata ayıklaması zor hatalar yapmaya devam etmektense bu programlara düzeltme ekleri göndermeyi tercih ederim.

cat > /usr/local/bin/py << 'EOF'#!/bin/dashpython3 "$@"EOF

(/usr/local/bin adresine yazma izniniz olması şartıyla) aynı şekilde

cat > /usr/local/bin/pyi << 'EOF'#!/bin/dashpython3 -i "$@"EOF

sonra sadece py yazın (ve # 'da py kullanın! seçtiğiniz python için satırlar).

Sadece bir uyarı: /usr/bin/python sembolik bağını 2.7 yerine python3’e işaret edecek şekilde değiştirmeye çalışmayın. Ubuntu repolarında bulunan birçok program /usr / bin/ python’un python 2 ile uyumlu olmasını gerektirir.x.

Başka bir notta, Python 3’ü varsayılan yapma hakkında bilgi edinmeye çalıştıkları için buraya gelen herkes, bunun yerine sanal ortamları (örneğin virtualenv) veya kapsayıcıları (örneğin LXC veya Docker) araştırırken kullanım bulabilir.

@wjandrea, evet sanal bir ortamda bile, 'python` ‘python2’ anlamına gelmelidir. Yorumumu, sistemin Python’una geçici bir çözüm bulmaya çalışmak yerine uygulamaya özel bir Python sürümüne sahip olmanın bir yolu olarak kastettim.

Yükseltmeyle kastettiğin şeyi şimdi anladım… Aslında Ubuntu geliştiricileri bunun üzerinde çalışıyor: Python/3 - Ubuntu Wiki “Ubuntu 14.04 lts’nin masaüstü CD görüntülerinde yalnızca Python 3’e sahip olması bir sürüm hedefidir.”

Soulsource’un en üstteki uyarısına atıfta bulunmak için bkz. [PEP 394](PEP 394 – The “python” Command on Unix-Like Systems | peps.python.org /) Python yürütülebilir dosyalarının bir arada bulunması için adlandırma kurallarını standartlaştıran ve Python programcılarının ve paket bakıcılarının dayandığı (ve dayanması gereken).

sudo apt install python-is-python3 (Ubuntu 20.04+ için)

@soulsource, evet bunun farkındayım. bu yüzden bir “yükseltme” seçeneği olup olmadığını sordum.

Bence Radu Rădeanu’nun cevabı zaten en uygun çözüme oldukça yakın. Yalnızca bir kullanıcı için geçerlidir ve yalnızca python komutunu yazarak doğrudan python’u çalıştırmak için geçerlidir, programları # ile etkilemez!/usr/bin/python shebang.

@soulsource aradığım şey bu! :slight_smile: teşekkürler!

@Kevin Sadece bir virtualenv kullanmayı denedim, ancak terminalden Gedit’i açar açmaz, eklentilerinin Python 2’ye ihtiyacı olduğu için bir sürü hata aldım. Python 2 olan python komutuna dayanan diğer yazılımlar için de benzer sorunlar olabilir.