「ssl module in Python is not available」とは?原因の確認方法と対処法

目次

はじめに

「『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モジュールを正常に利用できる状態になっています。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次