LoginSignup
3

More than 3 years have passed since last update.

[解決済み]Python3.8.5で「ssl module in python is not available」

Posted at

前書き

UbuntuでPython3を使う場合、aptapt-getでパッケージをインストールするのがスタンダードと思います。
ただ、「最新版」を使いたい場合、tarballからインストールしなければいけません。
今回、少々トラブりましたので、そのメモです。

参考サイト

環境

補足

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が出ていたようです。。。

後書き

真面目に添付ドキュメントを読めば、前提となるライブラリも書いてあるとは思うのですが、いかんせん英語苦手で根性無しなので、やっつけで対処方法をメモしました。
configuremake installのあたりは他のプログラムをtarballからインストールする際にも応用できると思います。
※特殊な方法が必要なものもあるかもしれませんが。

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
3