web-dev-qa-db-ja.com

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

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

サポート終了:Python 2.7は2020年1月1日にサポートが終了します。Python 2.7はそれ以降はメンテナンスされないため、Pythonをアップグレードしてください。 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.
39

Bionic Beaverのリリースノート によると:

Python 2はデフォルトではインストールされなくなりました。 Python 3が3.6にアップデートされました。これはPython 2をメインに含む最後のLTSリリースです。

上記の説明は真実です。 Python 2は、18.04以降にリリースされたバージョンではデフォルトでインストールされません。 Ubuntuは、ほぼすべてのプロジェクトをPython 2からPython 3にすでに移動しています。たとえば、 Disco Dingoのリリースノート によると:

Sambaはバージョン4.10.xに更新されました。ここでの大きな変更点の1つはpython3のサポートです。ディスコでは、tambaを除いて、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に移動していない他のパッケージの依存関係である可能性があります。インストールされている依存パッケージを確認できますPythonで2を実行して

apt rdepends python --installed

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

pythonコマンドは常にPython 2を呼び出す必要があります(Python 2コードの実行時に診断が難しいエラーを防ぐためにPythonで3)。

45
Kulfy

私の知る限りでは、Arch Linuxだけがそれを行いました。デフォルトのpythonコマンドからpython3を呼び出すことです。 PEP 394 の推奨にもかかわらず、.

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

#!/usr/bin/env python2

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

0
yota