Simple is Best

Python 3.7.3 をビルドする


Feren OS に Python 3.7.3 を自分でビルドしてインストールしたときのメモです。

python3: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory の対処法は一番下に書いてあります。

Feren OS は Mint Linux の派生ディストリビューションなので、Debian系はここに書いてある通りすればいけると思います。(多分)

ソースコードの入手

公式サイトにコードが転がっている のでそこから落としてきます。

2019/04/27 現在の最新版は Python 3.7.3 です。

落としてきたら tar xvf で解凍しておきます。

以下はすべて Python 3.7.3 を落とした場合のターミナルの様子です。

1
2
3
$ wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
$ tar xvf Python-3.7.3.tgz
$ cd Python-3.7.3

ビルド

まずはビルドに必要なツールをインストールしておきます。

1
2
3
4
5
$ sudo apt update
$ sudo apt install build-essential libbz2-dev libdb-dev \
libreadline-dev libffi-dev libgdbm-dev liblzma-dev \
libncursesw5-dev libsqlite3-dev libssl-dev \
zlib1g-dev uuid-dev tk-dev

参考: Ubuntu環境のPython - python.jp

続いて make を利用してビルドします。FFmpeg みたいに色々オプションがあるわけではないです。なんか --enable-optimizations をつけるといい感じになるという話を聞いたのでつけておきます。

1
2
$ ./configure --enable-optimizations --enable-shared
$ make -j4 && sudo make altinstall

すでに Python が入っている場合、パスの通し方によっては python3 コマンドが 3.7 にあがってしまうので、altinstall を利用することが推奨されています。

Intel Core i5-4200M、RAM 8GB で SSD な ThinkPad E440 でビルドした場合、30分ほどかかりました、参考までに。

libpython3.7m.so.1.0 がないと怒られる

これで無事インストールできたと思って python 3.7 を実行すると python3: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory が出ました。いろいろ調べてみると libpython3.7m.so.1.0 を見つけられないから怒られるらしいので、場所を教えてやります。

僕の場合は以下のようにパスを登録し、そのパス先に落としてきた Python-3.7.3 に入っていた libpython3.7m.so.1.0 をコピーしたらうまくいきました。

1
2
3
$ sudo mkdir /opt/python373/lib
$ sudo vim /etc/ld.so.conf.d/libpython.conf # /opt/python373/lib の一行を追加
$ sudo ldconfig -v

これで無事 Python 3.7.3 がインストールできた、やったね。

1
2
3
4
$ python3.7 --version
Python 3.7.3
$ pip3.7 --version
pip 19.0.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)

URLをクリップボードにコピーしました。

Linux に Anaconda3 と PyCharm を入れる