pipはPythonに同梱されているパッケージマネージャです。本記事ではPythonをソースからインストールする際、”ModuleNotFoundError: No module named ‘zlib'”といったエラーでインストールが失敗した場合の対処法を紹介します。
zlibをインストールする
zlibは、zip圧縮やgzip圧縮の内部で使われている圧縮アルゴリズムを実装したライブラリです。zlibがあらかじめOSにインストールされていない場合、ソースからのPythonのインストールは失敗します。この際、以下のようなエラーが発生します。
Traceback (most recent call last): File "", line 520, in _get_decompress_func ModuleNotFoundError: No module named 'zlib' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "", line 568, in _get_data File "", line 523, in _get_decompress_func zipimport.ZipImportError: can't decompress data; zlib not available
エラーを解消するにはzlibをインストールします。Ubuntuの場合は以下のようにインストールできます。
$ sudo apt-get install zlib1g-dev $ #または $ sudo apt install zlib1g-dev
zlibをインストールした後、Pythonを再度インストールします。以下は基本的なダウンロード・インストール手順の一例です。Pythonバージョン等は必要に応じて置き換えます。
$ wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz $ tar -xzf Python-3.8.0.tgz $ cd Python-3.8.0/ $ ./configure $ make $ sudo make install
zlibのインストール後はPythonが正常にインストールされます。なお、zlibインストール前後のmakeのログを見ると、zlibモジュールが正常にビルドされたかどうかを確認できます。以下はzlibインストール前にmakeしたときのログです。
Python build finished successfully! The necessary bits to build these optional modules were not found: _bz2 _curses _curses_panel _dbm _gdbm _hashlib _lzma _sqlite3 _ssl _tkinter _uuid readline zlib To find the necessary bits, look in setup.py in detect_modules() for the module's name.
ビルドされなかったモジュールの一覧にzlibが含まれているのが確認できます。次に、以下がzlibインストール後にmakeしたときのログです。
Python build finished successfully! The necessary bits to build these optional modules were not found: _bz2 _curses _curses_panel _dbm _gdbm _hashlib _lzma _sqlite3 _ssl _tkinter _uuid readline To find the necessary bits, look in setup.py in detect_modules() for the module's name.
今度は一覧からzlibが消えており、zlibモジュールが正常にビルドされたことが確認できます。
関連記事
Pythonインストール後、環境によっては以下のリンク先で解説しているエラーにも遭遇するかもしれません。