Ubuntu20.04 + Python3.8 + Apache2 の環境をセットアップしていたときに遭遇した問題への対処の記録。
問題
venv 環境で mod_wsgi を pip インストールしようとしたらエラーが発生した。
Building wheels for collected packages: mod_wsgi
Building wheel for mod_wsgi (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> [11 lines of output]
running bdist_wheel
running build
running build_py
running build_ext
building 'mod_wsgi.server.mod_wsgi-py38' extension
In file included from src/server/mod_wsgi.c:22:
src/server/wsgi_python.h:26:10: fatal error: Python.h: No such file or directory
26 | #include <Python.h>
| ^~~~~~~~~~
compilation terminated.
error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for mod_wsgi
Running setup.py clean for mod_wsgi
venv 環境だから起きるのかはわからないが、とりあえず gcc が Python.h が無いと言っている。
対処
とりあえずこの1個前段階で別のエラーが出ていたので apache2-dev をインストール。Ubuntu 以外のディストリビューションだとパッケージの名前が違うらしいので注意。
$ sudo apt install apache2-dev
それで本題。Python.h が見つからない問題は、python3.8-dev をインストールする。
$ sudo apt install python3.8-dev
これで mod_wsgi の pip インストールも上手くいった。apt で指定するパッケージ名の .8 を忘れると別のバージョン(たぶん3.6)がインストールされるので要注意。