Python 2.7がUbuntuのデフォルトのPythonバージョンのままなのはなぜですか?


32

Pythonの公式ドキュメントによると、Python2.7のサポートは近い将来終了します。

廃止:Python 2.7は2020年1月1日にサポートが終了します。Python2.7はそれ以降はメンテナンスされないため、アップグレードしてください。pipの将来のバージョンでは、Python 2.7のサポートが廃止される予定です。pipでのPython 2サポートの詳細については、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に更新されました。これは、メインにPython 2を含む最後のLTSリリースです。

そして、上記の文は真実です。Python 2は、18.04およびそれ以降にリリースされたバージョンではデフォルトでインストールされません。Ubuntuはすでにによると、例えば、Pythonの3にはPython 2からのほぼすべてのプロジェクトの移動したディスコディンゴのリリースノート

Sambaはバージョン4.10.xに更新され、ここでの大きな変更点の1つはpython3のサポートです。Discoでは、tdbを除き、sambaとその依存関係はすべて現在python3のみです。tdbはまだpython2パッケージ、つまりpython-tdbをビルドしますが、samba自体を含む他のすべてはpython3のみです。

さらに、Ubuntu 18.04のリリース前でさえ、Ubuntu / Canonicalは開発者にPython 3への移行を求め始めましたPythonから-Ubuntu Wiki

現在、Ubuntu / Canonicalによる開発はすべてPython 3を対象としている必要があり、新しいコードはすべてPython 3のみである必要があります。依存関係スタックのためにこれができない場合は、話しましょう。

システムにPython 2が意図的にインストールされたか、開発者がPython 3に移行していない他のパッケージの依存関係としてインストールされているようです。Python2に依存するパッケージを実行するには、

apt rdepends python

python実行時にPython 2が呼び出される理由は、PEP 394の歴史的なポイントの1つ-Unixライクシステム上の "python"コマンドにあります。

このpythonコマンドは、常にPython 2を起動する必要があります(Python 2コードがPython 3で実行されているときに診断が難しいエラーを防ぐため)。


12
最後のポイントを明確にするために、Python 3はPython 2と後方互換性がありません。また、Python 2がPython 3よりも多くのライブラリをサポートしているという事実と相まって、多くの開発者がPython 2に直接依存していることを意味します。 Python 3はもうしばらく前にリリースされましたが、実際にはPython 2がまだサポートされていないにもかかわらず、Python 2が依然として非常に強力に使用されているのはライブラリです(正しく覚えていれば、公式サポートは終了しました2018)。編集:公式サポートは2020
。– searchengine27

8
「... Python 2はPython 3よりも多くのライブラリをサポートしているという事実...」 -そのソースはありますか?Python 3をサポートしていないライブラリに出会うことはほとんどありません。実際、Python 2のサポートをやめる人もいます。(たとえば、人気のあるPython WebフレームワークであるDjangoは、3つのリリースでPython 2をサポートしていません。)あなたの声明は5年前には意味がありましたが、今日、統計でバックアップせずにその大まかな一般化を行うことはできないと思います。
マルセルム

7
@ searchengine27ライブラリのサポート要因は考えられません。後方互換性の問題は、世界で始まるランダムなスクリプトであふれているということである#!/usr/bin/pythonならば破るまたは同等の、pythonとなったpython3のPython 3に依存ランダムスクリプトは可能性が高いと開始することです一方で、#!/usr/bin/python3
James_pic

1
@ searchengine27昔、誰かが最も一般的な依存関係とそのpython3ステータス(当時はひどい)をリストした「Python3 Wall of Shame」ウェブサイトを作成しました。しかし、実際にはすべての一般的な依存関係が移行され、移行されなかったいくつかは死んでいるため、Python 3 Wall of Superpowersに変更されてから数年が経ちました(ウェブサイトは2018年4月以来基本的にすべて更新されていませんpython3-able)です。
ジャコモアルゼッタ

4
ただ、追加として:Pythonソフトウェア財団は、2020年にはPython 2を維持することを停止するという事実が意味するものではありません Canonicalのは実際には2020年にはPythonの2を維持停止することを、全体のポイントのLinux使用の分布を評判のベンダーからはつまり、すべてのディストリビューションのパッケージ(「メイン」リポジトリを意味するDebian / Ubuntuの場合)は、元のアップストリームパッケージのサポートステータスに関係なく、ディストリビューションリリースの全ライフタイムにわたって維持されます。つまり、Ubuntu 19.04のPython 2パッケージは、Ubuntu 19.04が維持されている限り維持されます。
イェルクWミッターク

0

私の知る限り、arch linuxのみがそれpython3を行いましたpython。デフォルトのコマンドから呼び出すことです。PEP 394勧告にもかかわらず。

これは、中に変更することができます/usr/bin間のリンクを再定義することによってpythonpythonXおよびpythonX.Y。ただし、すべてのpython2スクリプトには明示的なシェルバンが必要になるため、多くのバグに対処する準備をしてください。

#!/usr/bin/env python2

古いスクリプトではめったに使用されないシェルバン。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.