Python
初心者
openSUSE
zlib
WSL

WSL(openSUSE)にPython3.7.2をインストール


概要

WSL(openSUSE Leap15)にPython3を導入したがzypper経由だと3.6.5までしか入らない(2019/03/13現在).最新の3.7.2をビルドしたらいろいろハマったのでメモ.


導入

まずはPython3をインストール.

sudo zypper install python3

ついでにpipも入れた.

sudo zypper install python3-pip


最新版のビルド

LinuxにPython3系をインストールする手順

Unix プラットフォームで Python を使う

を参考に最新版をビルドした.

(注)make installはPython3のバイナリを破壊する可能性があるらしいのでmake altinstallが推奨されている.これについては「あとがき」参照.

wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz

tar -xvzf Python-3.7.2.tgz
cd Python-3.7.2
./configure
make
sudo make install

すると最後らへんにこんな文言が出た.

zlib not available

make: *** [install] Error 1

zlibないのか~と思ってインストールを試みる.

sudo zypper install zlib                                                                                 14:45:32 [sudo] password for root:

Loading repository data...
Reading installed packages...
'zlib' not found in package names. Trying capabilities.
'libz1' providing 'zlib' is already installed.
Resolving package dependencies...

Nothing to do.

zlibというパッケージ名ではないようだが,あるにはあるらしい.困った.

ということで

https://github.com/pyenv/pyenv/wiki

を参考にコードを走らせる.

zypper install gcc automake openssl-devel ncurses-devel readline-devel zlib-devel tk-devel libffi-devel sqlite3-devel

そんで,再び

./configure

make
sudo make install

すると無事3.7.2になりました.


あとがき

ビルドの時に参考にしたPython本家ドキュメントには


警告 make install は python3 バイナリを上書きまたはリンクを破壊してしまうかもしれません。そのため、make install の代わりに exec_prefix/bin/pythonversion のみインストールする make altinstall が推奨されています。


とあるので,make installする前に

./configure

make
sudo make altinstall

をした.

すると

setuptools in /usr/local/lib/python3.7/site-packages (40.6.2)

pip in /usr/local/lib/python3.7/site-packages (18.1)

と出力され,Python本体のバージョンは変わらなかった.

仮想環境で3.7.2を入れられるようになったということだろうか.

自分は本体も更新したかったのでmake installした.

この辺は詳しい事情を知らないので誰か教えてください.オナシャス.


参考資料

URLの再掲.

LinuxにPython3系をインストールする手順

Unix プラットフォームで Python を使う

https://github.com/pyenv/pyenv/wiki

初投稿につき参考にさせて頂きました.ありがとうございます.

Qiita初心者の投稿方法備忘録

Qiita記事の書き方〜基本の基本〜