12

C \C++コードでPythonを拡張する方法についてこのチュートリアルに従っています。

「GCCforMicrosoftWindowsを使用した拡張モジュールのビルド」という名前のセクションは、次のエラーで失敗します。

fatal error: Python.h: No such file or directory

「MicrosoftVisualC++を使用した拡張モジュールの構築」という名前のセクションも、同様のエラーで失敗します。

fatal error C1083: Cannot open include file: 'Python.h': No such file or directory

これを解決するにはどうすればよいですか?

4

3 に答える 3

51

Linuxの場合、Ubuntuユーザーは、コンパイル中にPython.hが見つからないという問題を解決するには、ターミナルで次のコマンドを実行して、Pythonの開発パッケージをインストールします。

ターミナル内:sudo apt-get install python-dev

幸運を

于 2011-06-08T20:56:27.160 に答える
19
  1. Python.hを見つけることができるようにpythondevファイルがありますか?
  2. コンパイラにPython.hの場所を指定していますか?gccでは、これは通常、含める-Iパスを介して行われます。

それらのどれが失敗しているかを把握することで、問題を解決できます。

リンクした記事から:

gcc -c hellomodule.c -I / PythonXY / include

gcc -shared hellomodule.o -L / PythonXY / libs -lpythonXY -o hello.dll

彼らはあなたがデフォルトの場所c:\ pythonXYにPythonをインストールしたと仮定しました(ここでXはメジャーバージョン番号でYはマイナーバージョン番号です)(あなたの場合はPython26)pythonを別の場所に置く場合は、/PythonXYをインストールした場所に置き換えてくださいそれ。

于 2010-11-04T14:30:48.120 に答える
0

Pythonの公式ドキュメントはすでにそれを明らかにしています。こちらをチェックしてください

ヘッダーファイルは通常、Pythonでインストールされます。Unixでは、これらはディレクトリprefix / include /pythonversion/およびexec_prefix/include / pythonversion /にあります。ここで、prefixおよびexec_prefixは、Pythonのconfigureスクリプトに対応するパラメータによって定義され、バージョンは'%d。%d'%sysです。 version_info [:2]。Windowsでは、ヘッダーはprefix / includeにインストールされます。ここで、prefixはインストーラーに指定されたインストールディレクトリです。

ヘッダーを含めるには、コンパイラのインクルードの検索パスに両方のディレクトリ(異なる場合)を配置します。親ディレクトリを検索パスに配置してから#includeを使用しないでください。プレフィックスの下のプラットフォームに依存しないヘッダーにはexec_prefixからのプラットフォーム固有のヘッダーが含まれるため、これはマルチプラットフォームビルドでは機能しません。

また、コンパイラに渡す必要のある正しいcflagを取得するための便利な方法を提供しています。ここ

たとえば、コマンドを実行した後に得られたものは次のとおりです

root@36fd2072c90a:/# /usr/bin/python3-config --cflags
-I/usr/include/python3.5m -I/usr/include/python3.5m  -Wno-unused-result -Wsign-compare -g -fstack-protector-strong -Wformat -Werror=format-security  -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes

それらのフラグをコンパイラーに渡すと、機能します。

于 2020-02-18T23:20:24.420 に答える