Python 3.8 が公開されました。Ubuntu 18.04 の場合、Python 3.8 のパッケージが用意されることはないので、Ubuntu の LTS で Python 3.8 を使おうとしたら来年の4月に公開される Ubuntu 20.04 まで待つ必要があります。
Python の場合は、それほどバージョンアップを急ぐ必要はないのですが、テスト等のために Ubuntu 18.04 で Python 3.8 を利用しようと思ったら、最も基本的なインストールの方法はソースを python.org からダウンロードしてきて自分でコンパイルすることです。それ以外には、データサイエンス系であれば Anaconda がお勧めですが、使えるようになるまでにはかなり時間が必要です。また、ppa の deadsnakes を使ってインストールする方法もあります。
ソースからビルドする場合の基本
公式マニュアルによると、基本的には、ソースをダウンロードしてきて、普通にビルドをしてインストールできるとなっています。
./configure
make
sudo make install
また、警告があって「make install は python3 バイナリを上書きまたはリンクを破壊してしまうかもしれません。そのため、make install の代わりに exec_prefix/bin/pythonversion のみインストールする make altinstall が推奨されています。」と記載されています。したがって、基本的にはコマンドは以下のようになります。
./configure
make
sudo make altinstall
Ubuntuの場合は、既定でインストールするとusr/local
にインストールされるので上書きまたはリンクの破壊はされませんが、PATHの優先順位の関係で、python3
コマンドで python3.8 が起動するようになります。間違った場合には、慌てずに/usr/local/bin
ディレクトリにあるpython3
を削除すればいいだけです。ついでに2to3
, idle3
, pip3
, pydoc3
, pyvenv
を削除するとmake altinstall
をしたのと同じになります。
実際の操作
依存関係のインストール
build-essentialパッケージを使って基本的な開発ツールをインストールし、その他の不足している依存関係をインストールします。tk-dev
は、サーバーでは普通はtk
を使わないで省いています。もし、PC の場合やサーバーに GUI をインストールしていてtk
を使う場合は、tk-dev
を追加するようにします。
sudo apt update
sudo apt install build-essential
sudo apt install libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev libgdbm-dev libbz2-dev liblzma-dev zlib1g-dev uuid-dev libffi-dev libdb-dev
Pythonをダウンロードしてインストールするまで
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz
tar -xf Python-3.8.0.tar.xz
cd Python-3.8.0
./configure --enable-optimizations
make -s -j4
sudo make altinstall
configure
で --enable-optimizations
オプションを付けているのは、./configure
を実行するとそういうメッセージが出るためです。これをつけると処理が若干速くなりますが、make
の時にテストが走るので高速なPCで5分ぐらいかかります。Python 3.7 の場合はテスト項目が多く20分ぐらいかかっていたのでかなり面倒でしたが、Python 3.7 の場合は高速なPCを使っているのであれば付けた方がいいと思います。
makeのjオプションは、コンパイルするときに使用するコアの数を指定するもので、-j4とすると4コアを使用するようになります。jオプションを付けないと1コアだけしか使わないのでコンパイル時間が短くなります。
Ubuntu 18.04 の Python 3.6 は、gcc 8.3 でコンパイルされていますが、Python 3.8 も、gcc 8.3 でコンパイルすることができます。gcc 8.3 でコンパイルしたい時は、build-essential
に追加してgcc-8
をインストールして
sudo apt install gcc-8
それから。./configure に CC オプションで gcc-8 の指定を追加すればできます。
./configure --enable-optimizations CC=gcc-8
試してみましたが処理速度としてはあまり速くならなかったです。
また、configureを実行するときに--prefixオプションを設定することでインストール先を変更することができます。例えば、ルート権限がない場合には、次のようにすれば、ホームディレクトリーにインストールできます。Ubuntuの場合には、デフォルトで~/.local/bin
にPATHが通っているので、インストール後すぐにpython3.8
で利用できりようになります。
./configure --prefix=$HOME/.local --enable-optimizations
make -s -j2
make altinstall