Python.h: brak takiego pliku lub katalogu

Niedawno zainstalowałem KDevelop 4 dla programowania C++ na moim MacBooku Pro z systemem Ubuntu 12.04 LTS.

Chcę osadzić aplikację Pythona w moim kodzie C++. Aby to zrobić, trzeba włączyć Python.plik nagłówkowy H. Więc to zrobiłem.

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

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

Jednak po uruchomieniu otrzymałem następującą odpowiedź od IDE:

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

Jednak szybko znalazłem problem. Nie pobrałem pakietu python-dev. Więc to zrobiłem. Pobiegłem ponownie, ale znowu był ten sam błąd. Pomyślałem więc, że to musi być problem z tym, że plik nagłówkowy nie jest dołączany przez KDevelop. W ten sposób dodałem odpowiedni folder do ścieżki include i KDevelop natychmiast to rozpoznał, usuwając czerwone podkreślenie pod drugą instrukcją include w kodzie powyżej.

Ale nadal problem pozostaje. Mam ten sam błąd. Będę wdzięczny za każdą pomoc lub wkład, który możecie zapewnić: -) Wielkie dzięki.

EDIT: niektóre szczegóły, o których wcześniej nie wspomniałem, to KDevelop używa cmake dla mojego projektu. Domyślam się, że powodem mojego problemu jest to, że cmake nie zna odpowiednich ścieżek kompilatora i linkera. Byłbym wdzięczny za każdą pomoc w ustawieniu prawidłowych ścieżek dla cmake.

Author: Shubham Goyal, 2012-06-15

6 answers

W swoich Cmakelistach.txt, spróbuj dodać:

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

Aby uzyskać szczegóły poleceń, uruchom:

cmake --help-module FindPythonLibs
cmake --help-command find_package
cmake --help-command include_directories
cmake --help-command target_link_libraries
 32
Author: Fraser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-15 21:06:44
sudo apt-get install python2.7-dev

Pracował dla mnie na " Python.h: No such file or directory " issue

 28
Author: Dimitris Baltas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-11 11:13:26

Chcesz umieścić w linii kompilacji:

`python-config --cflags`

I to na linku:

`python-config --ldflags`
 10
Author: Nikolai Fetissov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-14 21:09:16

Najprawdopodobniej Python.h nie znajduje się w ścieżce dołączania Twoich systemów. Możesz dowiedzieć się, gdzie Twój Python.h jest przez bieganie

dpkg -L python-dev | grep Python.h

Spowoduje to również sprawdzenie, czy pakiet python-dev rzeczywiście zainstalował Pythona.h.

Nie mam tutaj kdevelopa, ale większość IDE ma ustawienie, gdzie możesz określić ścieżkę include używaną przez system budowania, i powinieneś być w stanie dodać ścieżkę do Pythona.H leży tam.

EDIT:

Jak zasugerował Nikolai, będziesz również potrzebował aby dodać poprawną ścieżkę biblioteki dla etapu łączenia. (Wyjście python-config --ldflags).

 4
Author: niko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-14 21:09:03

Zakładam, że jest już zainstalowany. Znajdź ścieżkę za pomocą:

find / -iname python.h

A kiedy to zrobisz, podczas kompilacji dodaj

-I python_h_path
 2
Author: Roxy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-10 14:12:56

Dla użytkowników Linuksa Ubuntu Putty wypróbuj to:

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

Następnie skompiluj

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

Następnie uruchom go

./check 
 0
Author: chhotu sardar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-27 19:32:34