C
Python検証済み

fatal error: Python.h: No such file or directory の原因と直し方【Dockerで検証済み】

fatal error: Python.h: No such file or directory の原因と解決方法。検証済みの解決コマンド付きで、現象→原因→解決→確認の順に最短で直せます。

発生したエラー

エラー出力
fatal error: Python.h: No such file or directory

結論:まずこれで直ります

このエラーは、C言語でPython拡張モジュールをコンパイルしようとした際に、Pythonのヘッダファイル(Python.h)が見つからないために発生します。下の解決コマンドを順に実行すれば直ります。

解決コマンド
apt-get update -y && apt-get install -y python3-dev gcc

現象どんなエラーか

次の操作を行うと(検証環境: python:3.11)、上記のエラーが発生します。まずは下の再現コマンドで、同じ状況を再現できることを確認してください。

検証環境:python:3.11

再現コマンド
cat > /tmp/hello_ext.c << 'EOF'
#include <Python.h>

static PyObject* say_hello(PyObject* self, PyObject* args) {
    printf("Hello from C extension!\n");
    Py_RETURN_NONE;
}

static PyMethodDef HelloMethods[] = {
    {"say_hello", say_hello, METH_VARARGS, "Print hello."},
    {NULL, NULL, 0, NULL}
};

static struct PyModuleDef hellomodule = {
    PyModuleDef_HEAD_INIT, "hello", NULL, -1, HelloMethods
};

PyMODINIT_FUNC PyInit_hello(void) {
    return PyModule_Create(&hellomodule);
}
EOF
gcc -shared -fPIC -o /tmp/hello.so /tmp/hello_ext.c 2>&1; exit 0

原因なぜ起きるのか

このエラーは、C言語でPython拡張モジュールをコンパイルしようとした際に、Pythonのヘッダファイル(Python.h)が見つからないために発生します。 原因: Python.h はPythonのC APIを使うために必要なヘッダファイルですが、通常のPythonランタイムパッケージには含まれておらず、開発用ヘッダパッケージ(Debian/Ubuntu系では python3-dev、RHEL系では python3-devel)を別途インストールする必要があります。 解決策: `apt-get install -y python3-dev` で開発用ヘッダとライブラリをインストールします。これにより Python.h が /usr/include/python3.x/ 以下に配置されます。コンパイル時には `-I$(python3 -c "import sysconfig; print(sysconfig.get_path('include'))")` でインクルードパスを明示的に指定することで、確実にヘッダを参照できます。pip でC拡張を含むパッケージ(例: numpy, Pillow, psycopg2 等)をソースからビルドする場合も同様に python3-dev が必要です。

解決解決手順

修正コマンド
apt-get update -y && apt-get install -y python3-dev gcc

確認直ったか確認する

確認コマンド
PYTHON_INCLUDE=$(python3 -c "import sysconfig; print(sysconfig.get_path('include'))")
gcc -shared -fPIC -I"${PYTHON_INCLUDE}" -o /tmp/hello.so /tmp/hello_ext.c && echo 'Build succeeded' && exit 0

動画で見る

この記事の解決手順は実環境で検証しています

山田 英紀(社内SE 5年以上・13業種以上の業務システムを開発/運用)が、 掲載コマンドを検証環境で実行し、再現〜解決〜確認まで通ることを確認しています。

この手順でも直らない・自社の環境で再現する場合

エラー調査・修正から、業務システムの改善までご相談いただけます。

無料で相談する

関連する記事