はじめに
「『ssl module in Python is not available』と表示されたけれど、何が原因なの?」
「pipでパッケージをインストールしようとしてもエラーになり、どこを直せばいいの?」と困っていませんか。
Pythonの環境を構築したあとにpipやHTTPS通信を使おうとして、このメッセージが表示されると、Python自体を入れ直すべきなのか、設定を変更すべきなのか分からず迷ってしまいますよね。
この記事では、エラーが表示される原因の確認方法から、SSLモジュールやOpenSSLの状態を調べる手順、原因に合わせた対処法まで分かります。
「ssl module in Python is not available」とはどんなエラー?

「ssl module in Python is not available」は、PythonでSSL/TLS通信に必要なsslモジュールを利用できない状態を示すエラーです。
ここでは、sslモジュールを利用できない状態と、pipやHTTPS通信への影響について説明します。
Pythonのsslモジュールを利用できない状態を示している
「ssl module in Python is not available」と表示される場合、Pythonが標準ライブラリのsslモジュールを正常に読み込めていない状態です。
sslモジュールはSSL/TLSによる暗号化通信に使われるため、利用できないとHTTPS通信などの処理に影響します。
pipやHTTPS通信でエラーが発生することがある
sslモジュールを利用できないと、pipがHTTPS経由でパッケージを取得できず、インストールに失敗することがあります。
Pythonから外部サイトへHTTPS接続する処理でもエラーが発生するため、まずsslモジュールを正常に読み込めるか確認しましょう。
まずPythonでsslモジュールが使えるか確認する
「ssl module in Python is not available」と表示された場合は、まず現在使用しているPythonでsslモジュールを読み込めるか確認します。
ここでは、sslモジュールの読み込みとOpenSSLのバージョンを確認する方法を説明します。
import sslを実行してエラーの有無を確認する
Pythonでsslモジュールを利用できるか確認するには、Pythonを起動して「import ssl」を実行します。
エラーが表示されず入力待ちに戻れば正常に読み込まれており、エラーが表示された場合はsslモジュールを利用できない状態です。
Pythonが参照しているOpenSSLのバージョンを確認する
OpenSSLのバージョンは、「import ssl」を実行したあとに「ssl.OPENSSL_VERSION」を確認します。
「OpenSSL」とバージョン番号が表示されれば、現在のPythonが参照しているOpenSSLを確認できます。
OpenSSLのバージョンを確認したあと、現在のバージョンが古いのか、更新が必要なのか迷った場合は、確認方法とアップデート手順もあわせて確認しておきましょう。
▶OpenSSLのバージョンを確認する方法は?確認コマンドとアップデート手順を解説
「ssl module in Python is not available」が出る主な原因
「ssl module in Python is not available」が出る場合は、OpenSSLのインストール状況やPythonからの参照設定に原因がある可能性があります。
ここでは、sslモジュールを利用できなくなる主な3つの原因を説明します。
OpenSSLや必要な開発パッケージが不足している
Pythonでsslモジュールを利用するには、OpenSSLと必要な開発パッケージが必要です。
これらが不足した状態でPythonをビルドするとSSL/TLSに必要な機能が組み込まれず、sslモジュールを読み込めない場合があります。
Pythonのビルド時にOpenSSLを正しく参照できていない
OpenSSLがインストールされていても、Pythonのビルド時にヘッダーファイルやライブラリを正しく参照できていないと、sslモジュールを利用できない場合があります。
OpenSSLを検出できていなかった場合は、ビルド後にsslモジュールを読み込むとエラーが発生します。
OpenSSLのPATHや参照先が正しく設定されていない
OpenSSLを標準とは異なる場所にインストールしている場合は、Pythonのビルド時にその場所を参照できる設定が必要です。
PATHや参照先が正しく設定されていないとOpenSSLを検出できず、sslモジュールを利用できない場合があります。
「ssl module in Python is not available」の原因別・環境別の対処方法
「ssl module in Python is not available」を解消するには、使用しているOSやPythonのインストール方法に合わせて対処する必要があります。
ここでは、環境ごとの対処方法を順に説明します。
Ubuntu・LinuxでOpenSSL関連のパッケージをインストールする
UbuntuでOpenSSL関連のパッケージが不足している場合は、パッケージ一覧を更新して「openssl」と「libssl-dev」をインストールします。
必要なパッケージをそろえることで、Pythonのビルド時にOpenSSLのヘッダーファイルやライブラリを参照できるようになります。
pyenvでOpenSSLを指定してPythonを再インストールする
pyenvでPythonがOpenSSLを参照できていない場合は、「CPPFLAGS」や「LDFLAGS」にOpenSSLの参照先を設定してから「pyenv install」を実行します。
OpenSSLを正しく参照した状態で再インストールすることで、sslモジュールに必要な機能をPythonへ組み込めます。
pyenvでPythonを入れ直す手順や、インストールするバージョンの指定方法が分からない場合は、基本的な使い方を確認してから作業すると進めやすくなります。
▶pyenvでPythonをインストールする方法は?バージョン指定と切り替え手順を解説
macOSでOpenSSLのPATHと参照先を設定する
macOSでは、「PATH」にOpenSSLの実行ファイルがある場所を追加し、「LDFLAGS」と「CPPFLAGS」にライブラリとヘッダーファイルの参照先を設定します。
その状態でPythonをビルドすると、指定したOpenSSLを参照できるようになります。
改善しない場合はPythonを再ビルド・再インストールする
OpenSSLのパッケージや参照先を修正しても改善しない場合は、Pythonを再ビルドまたは再インストールします。
OpenSSLを正しく参照できる状態でPythonを入れ直し、再インストール後にsslモジュールを読み込めるか確認しましょう。
対処後にエラーが解消したか確認する
OpenSSLの設定変更やPythonの再インストールを行ったあとは、sslモジュールが正常に利用できる状態になったか確認します。
ここでは、対処後に確認する2つの項目を説明します。
import sslが正常に実行できるか確認する
対処後は、使用しているPythonで「import ssl」を実行します。
エラーが表示されず入力待ちに戻れば、sslモジュールは正常に読み込めています。
エラーが出る場合は、設定やPythonの環境をもう一度確認しましょう。
pipやHTTPS通信を再実行して確認する
「import ssl」が正常に実行できたら、エラーが発生していたpipやHTTPS通信をもう一度試します。
パッケージの取得やHTTPS通信がエラーなく完了すれば、SSL/TLS通信を利用できる状態になっています。
まとめ
「ssl module in Python is not available」が表示されたら、まず「import ssl」を実行し、sslモジュールを読み込めるか確認しましょう。
読み込めない場合は、OpenSSLや開発用パッケージ、Pythonのビルド時の参照設定に原因がないか確認すると、対処するポイントを絞りやすくなります。
設定を修正したあとは、必要に応じてPythonを再インストールし、最後にpipやHTTPS通信をもう一度試してみてください。
エラーなく通信できれば、sslモジュールを正常に利用できる状態になっています。











