LoginSignup
45
47

More than 3 years have passed since last update.

UbuntuでPythonをソースからインストール

Last updated at Posted at 2018-01-12

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
45
47
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
47