LinuxディストリビューションにおけるPython 3デフォルト化の流れ
2015年6月2日修正:henrichさんのコメントを受け、Debianの記述を修正しました。
最近のLinuxディストリビューションにおいてPython 3がデフォルトになってきているという話をチラホラ聞くので、状況を調べてみました。
結論
- PEP 394にディストリビューション向けのガイドラインが公開されている。
- Arch Linuxは既にPython 3がデフォルトになっている。
- Fedora 23(2015-10-27リリース予定)でPython 3がデフォルトになる予定。
-
/usr/bin/python
は削除されるかpython3
にシンボリックリンクされるか議論されている。
-
- Ubuntu 16.04(2016-04リリース予定)でPython 3がデフォルトになる予定。
- Debian 9 (Stretch) または10 (Buster) でPython 3をデフォルトにするべく作業が始まっている。
PEP 394
PEP 394では、Arch Linuxが(アグレッシブにも)Python 3をデフォルトにしたことを受け、Unix-likeなディストリビューション向けに推奨されるpython
コマンドの振る舞いが記述されています。
PEP 394 -- The "python" Command on Unix-Like Systems
Recommendationを簡単に訳してみました。
推奨事項
- Unix-likeなディストリビューションはPython 2を
python2
コマンドとして、Python 3をpython3
コマンドとしてPATHにインストールするべきである。 python2
コマンドを実行するとPython 2が起動し、python3
コマンドを実行するとPython 3が起動するべきである。- Python 2がインストールされている場合は、
python
コマンドをインストールし、python
コマンドが実行された場合はpython2
コマンドが実行されたときと同じバージョンのPythonが起動すべきである。(ただしPython 3が起動する場合もある) - Python 2.xの
idle
,pydoc
,python-config
などのコマンドも同様に、idle2
,pydoc2
,python2-config
として実行でき、バージョンがついていないコマンドが実行された時は、これらのバージョンを実行すべきである。(ただしシステム管理者の設定によってPython 3.xのものが起動してもよい) - プラットフォームごとの差異に対応するため、Pythonインタプリタを起動する必要のあるコードでは
python
を指定すべきではなく、代わりにpython2
かpython3
(またはさらに特定のpython2.x
やpython3.x
)を指定すべきである。Shebangに書くときも同様である。 - 一点例外として、Python 2.xとPython 3.xの両方で動くスクリプトでは
python
を指定したりShebangに書いても良い。 - Pythonスクリプトから実行する場合は、
sys.executable
を使うのが望ましい。
Arch Linux
Arch Linuxはローリング・リリースを採用しており、明確なバージョンはありません。
2010-10-18に/usr/bin/python
がPython 3を指すようになったとアナウンスされています。
python
パッケージをインストールすると、Python 2ではなくPython 3が使えます。
Arch Linux - News: Python is now Python 3
参考:
実際に使ってみる
というわけで使ってみました。baseとbase-develグループをインストールしただけではPythonはインストールされなかったので、pythonパッケージをインストールしました。
python
コマンドで確かにPython 3が起動しました。
[root@archiso /]# python -V Python 3.4.3 [root@archiso /]# which python /usr/bin/python [root@archiso /]# ls /usr/bin/python* -l lrwxrwxrwx 1 root root 7 Mar 25 17:30 /usr/bin/python -> python3 lrwxrwxrwx 1 root root 14 Mar 25 17:30 /usr/bin/python-config -> python3-config lrwxrwxrwx 1 root root 9 Mar 25 17:30 /usr/bin/python3 -> python3.4 lrwxrwxrwx 1 root root 16 Mar 25 17:30 /usr/bin/python3-config -> python3.4-config -rwxr-xr-x 2 root root 10440 Mar 25 17:30 /usr/bin/python3.4 lrwxrwxrwx 1 root root 17 Mar 25 17:30 /usr/bin/python3.4-config -> python3.4m-config -rwxr-xr-x 2 root root 10440 Mar 25 17:30 /usr/bin/python3.4m -rwxr-xr-x 1 root root 3107 Mar 25 17:30 /usr/bin/python3.4m-config
なお、python2パッケージをインストールすれば、Python 2を使うことも可能です。
Fedora
次期メジャーリリースのFedora 23でPython 3をデフォルトにすることが提案されています。
Changes/Python 3 as Default - FedoraProject
ここでのデフォルトとは、以下のことを意味します。
- Python 2のみに対応していたYumに替わってDNFがデフォルトパッケージマネージャになる。(明記されていないがFedora 22で実施済みのはず)
- Python 3がminimal buildrootにおける唯一のPython実装になる。(Fedora 22で実施済み)
- Python 3がWorkstation LiveDVDにおける唯一のPython実装になる。
- Python 3がminimal cloud imageにおける唯一のPython実装になる。
- Python 3がAtomic hostにおける唯一のPython実装になる。
- Server LiveDVDでもPython 3が唯一のPython実装になると良いが、可能性は低い。
以下の点は議論されているようです。
参考:
- [Python-Dev] Python 3 as a Default in Linux Distros
- Python 3 Is Close To Becoming The Default In Fedora 22 - Phoronix
ちなみに最近のFedoraのリリース日*1は以下の感じです。
- Fedora 20 (Heisenbug): 2013-12-17
- Fedora 21: 2014-12-09
- Fedora 22: 2015-05-26
- Fedora 23: 2015-10-27(予定)
Ubuntu
Ubuntu 16.04でPython 3をデフォルトにすることが提案されています。
ここでのデフォルトとは、以下の意味です。
- Python 3がデフォルトでインストールされる唯一のPython実装になる。
- Python 3がインストールメディア(ISOなど)に含まれる唯一のPython実装になる。
- Ubuntu touchのイメージではPython 3のみが使用できる。
- Python 3をサポートするアップストリームのすべてのライブラリは、Python 3のバージョンがアーカイブに含まれる。
- Python 3上で実行できるすべてのアプリケーションはデフォルトでPython 3を使う。
- アーカイブに含まれるすべてのシステムスクリプトはPython 3を使う。
一方で、デフォルトが意味しないこととして、以下の点が挙げられています。
参考:
- Python - Ubuntu Wiki
- 2015年5月15日号 Ubuntu 15.10 “Wily Werewolf”の開発開始・ホワイトボックススイッチ版Ubuntu・Ubuntu版インターネット対応冷蔵庫 “ChillHub”:Ubuntu Weekly Topics|gihyo.jp … 技術評論社
- Python plans for LTS - | The Summit Scheduler
- Ubuntu Plans For Python 3 By Default For Ubuntu 16.04 LTS - Phoronix
ちなみに最近のUbuntuのリリース日*2は以下の感じです。
- 14.04 LTS (Trusty Tahr): 2014-04-17
- 14.10 (Utopic Unicorn): 2014-10-23
- 15.04 (Vivid Vervet): 2015-04-23
- 15.10 (Wily Werewolf): 2015-10(予定)
- 16.04 LTS: 2016-04(予定)
Debian
2015年4月8〜14日に開催されたPyCon 2015において、DebianのPythonメンテナ陣によるミーティングがあり、その後Python 3への移行がアナウンスされました。
移行の具体的な日付やタイミングは見つかりませんでしたが、2020年にPython 2のメンテナンスが終了することもあり、次期メジャーリリースのDebian 9 (Stretch) またはDebian 10 (Buster) でPython 3をデフォルトにするべく取り組みが始まっているようです。
参考:
- PyCon BoF: Stretch goals for cPython, PyPy & CFFI
- Python/StretchRoadmap - Debian Wiki
- py3porters-devel Info Page
- Python - Debian Wiki
- Debian Python Policy - Python Packaging
- Geoffrey Thomas (geofft)
- /usr/bin/python in Python 2 and 3
ちなみに最近のDebianのリリース日*3は以下の感じです。
- Debian 6.0 (Squeeze): 2011-02-06
- Debian 7 (Wheezy): 2013-05-04
- Debian 8 (Jessie): 2015-04-25
- Debian 9 (Stretch):
20182017? - Debian 10 (Buster):
20212019?
結論
最初に書いたものと同じです。
- PEP 394にディストリビューション向けのガイドラインが公開されている。
- Arch Linuxは既にPython 3がデフォルトになっている。
- Fedora 23(2015-10-27リリース予定)でPython 3がデフォルトになる予定。
-
/usr/bin/python
は削除されるかpython3
にシンボリックリンクされるか議論されている。
-
- Ubuntu 16.04(2016-04リリース予定)でPython 3がデフォルトになる予定。
- Debian 9 (Stretch) または10 (Buster) でPython 3をデフォルトにするべく作業が始まっている。
Python 3を明示的にインストールしなくても普通に使える環境が広がると嬉しいですね。 ディストリビューションのコミッターには本当に頭が下がります。
内容の正確さにあまり自信がないので、間違っていたりもっと良い情報がありましたらお知らせください。 他のディストリビューションの情報も歓迎です。