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.
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
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
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`
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).
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
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
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