前書き
UbuntuでPython3を使う場合、apt
かapt-get
でパッケージをインストールするのがスタンダードと思います。
ただ、「最新版」を使いたい場合、tarballからインストールしなければいけません。
今回、少々トラブりましたので、そのメモです。
参考サイト
環境
- Ubuntu 20.04 LTS 日本語 Remix
- Hyper-V マネージャー 10.0.18362.1
- Windows10 build 18363.997
- Python 3.8.5
- pip 20.1.1
補足
pipは下記aliasを使ってます。
pip='/usr/local/bin/python3.8 -m pip'
トラブル内容
pip
実行時に「~ ssl module in python is not available ~」とメッセージが出て正常に動作していないっぽい。
※python -m pip
で動作することから考えると、pip
自体はPythonのモジュールとして動作しているので、Pythonの環境に影響されるという事はなんとなくわかる。
推測される原因
Python 3.8.5をインストールした際にSSL(OpenSSL)のライブラリがきちんとリンクされていない。
この場合、Pythonを対話モードで実行してimport ssl
するとエラーになります。
import ssl
対処方法
- Pythonを正しくインストールするためのライブラリをインストール。
# 何はなくとも最新化
sudo apt update
sudo apt upgrade
sudo apt install \
build-essential libbz2-dev libdb-dev \
libffi-dev libgdbm-dev liblzma-dev \
libncursesw5-dev libreadline-dev libsqlite3-dev \
libssl-dev tk-dev uuid-dev \
zlib1g-dev
- Python最新版のtarballをダウンロード。
wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz
- ダウンロードしたファイルを解凍。
tar xf Python-3.8.5.tgz
- configureを実行
cd Python-3.8.5
./configure
- makeを実行
make
※いくつかWarningが出ますが、今回は気にせずに。
※どうも非推奨の処理が残っているようです。。。。
- 管理者権限でインストールを実行
sudo make install
- インストールされたファイルを確認
/usr/local/bin/python3.8 -V
apt
等パッケージをインストールしたファイルは別のところに入っています。
/usr/bin/python3.8 -V
- ついでに
pip
も最新化
/usr/local/bin/python3.8 -m pip install --upgrade pip
※いつの間にか20.2が出ていたようです。。。
後書き
真面目に添付ドキュメントを読めば、前提となるライブラリも書いてあるとは思うのですが、いかんせん英語苦手で根性無しなので、やっつけで対処方法をメモしました。
configure
~make install
のあたりは他のプログラムをtarballからインストールする際にも応用できると思います。
※特殊な方法が必要なものもあるかもしれませんが。