解決済み - Python.h: C++ にそのようなファイルまたはディレクトリがありません

Jay Shaw 2023年10月12日
  1. C++ での 'Python.h': No such file or directory エラーの原因
  2. C++ にコードを埋め込むことができる Python のインストール
  3. IDE の Include とリンカーに Python パスを追加する手順
  4. Include とリンカーへの Python パスの追加
  5. C++ で Python コードを記述してコンパイルする
  6. まとめ
解決済み - Python.h: C++ にそのようなファイルまたはディレクトリがありません

この記事では、エラー 'Python.h': No such file or directory を解決する方法を説明します。 これは通常、Python コードを C++ に埋め込もうとしたときに発生しますが、コンパイラはシステム内で Python への参照を見つけることができません。

C++ での 'Python.h': No such file or directory エラーの原因

以下は、Python コードを使用する C++ プログラムです。

#include <Python.h>
#include <conio.h>
#include <stdio.h>

int main() {
  PyObject* pInt;

  Py_Initialize();

  PyRun_SimpleString("print('Hello World from Embedded Python!!!')");

  Py_Finalize();

  printf("\nPress any key to exit...\n");
  if (!_getch()) _getch();
  return 0;
}

このプログラムをコンパイルすると、'Python.h': No such file or directory というエラーが表示されます。

Build started...
1>------ Build started: Project: Python into Cpp, Configuration: Debug x64 ------
1>1.cpp
1>C:\Users\Win 10\source\repos\Python into Cpp\1.cpp(3,10): fatal error C1083: Cannot open include file: 'Python.h': No such file or directory
1>Done building project "Python into Cpp.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

さまざまな理由により、'Python.h': No such file or directory の問題が発生します。

  1. Python はシステム内にインストールされていません。

    Python は、標準の Windows および C++ コンパイラのインストールに付属していないサードパーティのエンタープライズ ソフトウェアです。 正しい設定でインストールし、C++ コンパイラにリンクする必要があります。

  2. C++ コンパイラが Python を見つけられません。

    コンパイラが IDE または mingw4 を介して実行される場合、標準 C++ インクルード パッケージが標準インストールに含まれていることのみを検出できます。

    IDE include およびリンカー ファイルにサードパーティ ライブラリを追加する必要があります。

    上記の問題を解決するには、3つの手順を実行する必要があります。

    1. IDE への組み込みを可能にする Python のカスタム インストール。
    2. Python パスを IDE include およびリンカー パスに追加します。
    3. C++ コード内に Python コードを記述し、それらをコンパイルします。

C++ にコードを埋め込むことができる Python のインストール

システム内に Python が存在しない場合、または Python がインストールされてリンクされているにもかかわらず、エラー 'Python.h': No such file or directory が発生する場合は、Python のインストールでデバッグ バイナリがダウンロードされていないことが原因です。

エラー 'Python.h': No such file or directory を解決するために、Python をアンインストールしてから正しく再インストールすることをお勧めします。

Python Web サイト にアクセスして、最新の Python バージョンをダウンロードします。 特定のバージョンが必要な場合は、すべてのリリース ダウンロード セクションに進んでください。

この記事では Windows OS での手順を説明しているため、適切なオプションはWindows インストーラー (64 ビットまたは 32 ビット)を使用することです。 最新の PC を使用する場合は、64 ビット バージョンを使用することをお勧めします。

ダウンロードが完了したら、インストーラーを実行し、インストールのカスタマイズを選択します。 今すぐインストール オプションを選択すると、デフォルト設定で Python がインストールされますが、IDE に組み込むことができるデバッグ バイナリは除外されます。

Add Python X.X(version) to PATH を求めるボックスにチェックを入れ、Customize Installation をクリックします。

インストールのカスタマイズ

次のページで、すべてのボックスにマークを付けてから、[次へ] をクリックします。

オプション機能

3 番目のメニューで、[デバッグ バイナリをダウンロード] ボックスにチェックを入れ、[インストール] をクリックします。 選択したディレクトリに Python がインストールされます。

デバッグ ライブラリ

IDE の Include とリンカーに Python パスを追加する手順

標準インストールで C++ に付属していないサードパーティ ライブラリは、IDE を参照する必要があります。 IDE は、システム内のサードパーティ ライブラリを自動的に検索して検出することはできません。

これがエラー 'Python.h': No such file or directory の原因です。

パッケージ ライブラリが C++ スクリプトと同じディレクトリに格納されている場合、IDE はファイルを検索できますが、そのパスはプログラムの #include<> ヘッダー内に記載する必要があります。

しかし、この方法で依存関係を保存するのは悪い習慣です。

行う必要があるのは、ライブラリのパスを IDE にリンクして、標準のヘッダー ファイルをインクルードする方法でライブラリをインクルードできるようにすることです。これにより、ソース コードにファイル パスを指定する必要がなくなります。

標準インストールで C++ に付属していないサードパーティ ライブラリは、IDE を参照する必要があります。 IDE は、システム内のサードパーティ ライブラリを自動的に検索して検出することはできません。

これがエラー 'Python.h': No such file or directory の原因です。

まず、IDE が必要です。 Visual Studio (2017 以降) を使用することをお勧めします。この記事では、これについても説明します。

他の IDE も使用できます。ほとんどの手順は同じですが、Visual Studio を使用すると簡単になります。

システムに Visual Studio をインストールする

Visual Studioのインストーラーはこちらからダウンロードできます。 64 ビット コミュニティ バージョンをダウンロードしたら、C++ 開発オプションを含むソフトウェアをインストールします。

インストールが完了したら、新しいプロジェクトを作成します。

これまで Visual Studio を使用したことがない読者にとって、このウィンドウは威圧的に見えるかもしれませんが、心配する必要はありません。 必要な機能のほとんどは前面にあり、残りはこの記事で説明します。

プロジェクトを作成し、‘Python in cpp’ のような名前を付けます。 プロジェクトが作成されると、メイン ウィンドウは次のようになります。

メインウィンドウ

黒い画面だけがある場合は、Ctrl+Alt+l を押すと、ソリューション エクスプローラーが開きます。 ソリューション エクスプローラーには、プロジェクトで使用できるすべてのファイルと依存関係が表示されます。

Include とリンカーへの Python パスの追加

この手順では、Python パスを含めて Visual Studio にリンクし、#include <python.h> が記述されたときに IDE がどこを参照すればよいかを認識できるようにします。

この手順の前提条件は、Python がインストールされているディレクトリを把握し、別のウィンドウで開いたままにしておくことです。 Debug > Project Name > Properties に進みます (Project name の代わりに、プロジェクトの名前が表示されます)。

プロジェクト プロパティ

プロジェクト プロパティ ウィンドウ内で、C/C++ > 全般 > 追加のインクルード ディレクトリ に移動し、右端の小さなドロップ ボタンをクリックしてから、<編集...> をクリックします。

C++ 一般

追加のインクルード ディレクトリ ダイアログ ボックスが開きます。 ここで、最初の空白部分をダブルクリックし、システム内の Python がインストールされているディレクトリから include フォルダーのパスを貼り付けて、OK をクリックします。

追加のインクルード ディレクトリ

include ディレクトリのパスを追加したら、Linker > General > Additional Library Directories に進みます。 前のステップと同様に、<Edit...> をクリックします。

追加のライブラリ ディレクトリ

これで、libs フォルダーがリンカーに追加されます。 このフォルダーは、include フォルダーがある Python ディレクトリ内にもあります。

追加したら、[OK] をクリックしてから、[適用] をクリックします。

lib フォルダを追加

C++ で Python コードを記述してコンパイルする

include とリンカー パスが追加されたら、サンプル プログラムをコンパイルして、上記の手順が正しく実行されたかどうかを確認する必要があります。また、'Python.h': No such file or directory エラーは再び発生しません。

ソリューション エクスプローラーに移動し、ソース ファイルを右クリックします。 追加 > 新しいアイテム をクリックし、ファイルに名前を付けて [追加] をクリックします。

この新しいファイルには、コンパイルされるコードが含まれます。

以下は、エラーをスローした記事の冒頭で使用された C++ プログラムです。

#include <Python.h>
#include <conio.h>
#include <stdio.h>

int main() {
  PyObject* pInt;

  Py_Initialize();

  PyRun_SimpleString("print('Hello World from Embedded Python!!!')");

  Py_Finalize();

  printf("\nPress any key to exit...\n");
  if (!_getch()) _getch();
  return 0;
}

ここで、上部の緑色の再生ボタンをクリックしてファイルをコンパイルすると、次の出力が得られます。

Hello World from Embedded Python!!!

Press any key to exit...

まとめ

この記事では、エラー 'Python.h': No such file or directory を解決する手順について説明します。 この記事を読んだ後、読者は Python と Visual Studio をインストールし、それらを Python ライブラリにリンクできます。

関連記事 - C++ Error