2012-06-14 48 views
17

私は最近、Ubuntu 12.04 LTSを実行しているMacbook ProにC++開発用KDevelop 4をインストールしました。Python.h:そのようなファイルやディレクトリがありません

PythonアプリケーションをC++コードに埋め込みたいとします。そのためには、Python.hヘッダファイルをインクルードする必要があります。だから、私はそれをしました。

#include <iostream> 
#include <Python.h> 

int main(int argc, char **argv) { 
    Py_Initialize(); 
    return 0; 
} 

しかし、実行中に、私はIDEから次の応答を受け取っ:

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

しかし、私はこの問題はすぐに十分な発見しました。私はpython-devパッケージをダウンロードしていませんでした。だから、私はそれをしました。私は再び走ったが、同じエラーが再びそこにあった。だから、私はKDevelopに含まれていないヘッダーファイルの問題でなければならないと考えました。したがって、関連するフォルダをインクルードパスに追加し、KDevelopはすぐ上のコードの2番目のインクルードステートメントの下にある赤いアンダーラインを削除することで認識しました。

しかし、まだ問題は残っています。私は同じエラーが発生します。助けてくれれば助かりますか?-)

ありがとうございました。

編集:私が先に言及しなかったいくつかの詳細は、KDevelopが自分のプロジェクトにcmakeを使用していることです。私の問題が発生している理由は、cmakeが適切なコンパイラとリンカーのパスを知らないためです。私はcmakeの正しいパスを設定するための助けに感謝します。

+0

http://stackoverflow.com/questions/4097339/missing-python-h-while-trying-to-compile-ac-extension -module – ddzialak

+0

@ddzialak - はい、私はこの質問をする前にこの質問を見ました。その質問が私を助けない理由は、Python.hファイルが/usr/include/python2.7に実際に存在するからです。私は手動でそれをチェックし、Python.hをエディタでクリックするとファイルが開きます。 –

+0

@ShubhamGoyalこれで私を助けることができますか? http://stackoverflow.com/questions/31577539/how-can-i-incorporate-cmake-file-when-building-with-distutils-python – mayooran

答えて

24

を、以下を追加してみてください。

find_package(PythonLibs REQUIRED) 
include_directories(${PYTHON_INCLUDE_DIRS}) 
target_link_libraries(<your exe or lib> ${PYTHON_LIBRARIES}) 

コマンドの詳細については、

を実行してください。
cmake --help-module FindPythonLibs 
cmake --help-command find_package 
cmake --help-command include_directories 
cmake --help-command target_link_libraries 
+0

これはうまくいきました。実際には、私はあなたの答えを見て、CMakeで多くの読書をした後で動作するようにしましたが、解決策は同じです:D –

+0

私のCMakeLists.txtファイル - http://paste.ubuntuへのリンクです。 com/1042894/ –

+0

@ShubhamGoyalいいです。実際にあなたのCMakeLists.txtを見て、私は私の元の答えに括弧のセットを忘れていることに気づいた!今修正されました。 – Fraser

4

おそらくPython.hは、ビルドシステムのインクルードパスにありません。あなたはPython.hものpython-devパッケージは、実際にはPython.hがインストールされていることを確認します

dpkg -L python-dev | grep Python.h 

これを実行することにより、ここであなたは見つけることができます。

ここではkdevelopはありませんが、ほとんどのIDEではビルドシステムで使用されるインクルードパスを指定できる場所があり、Python.hがあるパスを追加できるはずです。

EDIT:ニコライが示唆されるように

、あなたはまた、リンク段階の正しいライブラリパスを追加する必要があります。 (python-config --ldflagsの出力)。リンク行に

`python-config --cflags` 

と、この:あなたがコンパイル行に次のものが含まれたい

+0

python-devパッケージがPython.hファイルをインストールしたことを確認しました。問題はどこでどのようにcmakeに正しいライブラリパスを追加するのかわかりません。その前にどんな助けもありがとう。私はcmakeの完全な初心者です。最初にこの言葉がこの質問を投稿した後であると聞きました。 –

10

あなたのCMakeLists.txtで

`python-config --ldflags` 
+0

私はここでnoobになってしまっては申し訳ありませんが、この場合コンパイルラインとリンクラインの意味を詳しく教えてください。私はIDEを使用しているので、私はコンパイルしていないし、ターミナルでリンクしています。 –

+1

IDEには、インクルードパス、ライブラリパス、コンパイラおよびリンカフラグの設定があります。上記のコマンドを実行します - 最初に '-I'指示文(パスを含む)とコンパイラフラグを与え、2つ目はリンカに対しても同じことを行います。それらをIDEの適切な設定に入れてください。 –

+0

うーん... KDevelopは私のプロジェクトにcmakeを使用しています。しかし、私は前にcmakeを使ったことは一度もなく、そこに道を設定するのに助けに感謝します。 –

27
sudo apt-get install python2.7-dev 

私は "Python"で動作しました。H:そのようなファイルやディレクトリの」問題のLinuxのUbuntuパテユーザ向け

+0

26.10.13現在のDebianテストではまだ動作確認済みです。 – timss

+0

CentOSで私を助けてくれたのは、 'sudo yum search python'で適切な-develパッケージを見つけてから、Pythonの特定のバージョンの' sudo yum install python26-devel.x86_64'です。 –

0

はこれを試してみてください。

sudo apt-get update 
sudo apt-get install python-dev 

その後、私が想定し

./check 
1

それを実行し

gcc -o check xyz.c -I/usr/include/python2.7/ -lpython2.7 

それをコンパイル既にインストールされていることを確認してください。

あなたがそうしてきたときにコンパイルするときと、追加
find/-iname python.h 

-I python_h_path 
関連する問題