błąd krytyczny: Python.h: brak takiego pliku lub katalogu

Próbuję zbudować bibliotekę współdzieloną przy użyciu pliku rozszerzenia C, ale najpierw muszę wygenerować plik wyjściowy za pomocą polecenia poniżej:

gcc -Wall utilsmodule.c -o Utilc

Po wykonaniu polecenia pojawia się komunikat o błędzie:

Utilsmodule.c: 1: 20: fatal error: Python.h: brak takiego pliku lub katalogu kompilacja zakończona.

W rzeczywistości próbowałem wszystkich proponowanych rozwiązań przez internet, ale problem nadal istnieje ... nie mam też problemu z Python.h. Udało mi się zlokalizuj plik na mojej maszynie ... czy ktoś wcześniej miał ten sam problem??
Author: Chris, 2014-02-03

25 answers

Wygląda na to, że nie zainstalowałeś poprawnie plików nagłówkowych i bibliotek statycznych dla Pythona dev. Użyj menedżera pakietów, aby zainstalować je w całym systemie.

Dla apt (Ubuntu, Debian...):

sudo apt-get install python-dev   # for python2.x installs
sudo apt-get install python3-dev  # for python3.x installs

Dla yum (CentOS, RHEL...):

sudo yum install python-devel   # for python2.x installs
sudo yum install python34-devel   # for python3.4 installs

Dla dnf (Fedora...):

sudo dnf install python2-devel  # for python2.x installs
sudo dnf install python3-devel  # for python3.x installs

Dla zypper (openSUSE...):

sudo zypper in python-devel   # for python2.x installs
sudo zypper in python3-devel  # for python3.x installs

Dla apk (Alpine...):

# This is a departure from the normal Alpine naming
# scheme, which uses py2- and py3- prefixes
sudo apk add python2-dev  # for python2.x installs
sudo apk add python3-dev  # for python3.x installs

Dla apt-cyg (Cygwin...):

apt-cyg install python-devel   # for python2.x installs
apt-cyg install python3-devel  # for python3.x installs
 1447
Author: wim,
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
2018-09-18 14:56:11

Na Ubuntu uruchamiałem Pythona 3 i musiałem zainstalować

sudo apt-get install python3-dev

Jeśli chcesz użyć wersji Pythona, która nie jest powiązana z python3, zainstaluj powiązaną wersję python3.pakiet x-dev. Na przykład:

sudo apt-get install python3.5-dev
 236
Author: FreshPow,
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
2017-12-28 18:49:03

Musisz zrobić dwie rzeczy.

Zainstaluj pakiet programistyczny dla Pythona, w przypadku Debiana / Ubuntu / Mint wykonujemy to poleceniem:

sudo apt-get install python-dev

Drugą rzeczą jest to, że pliki include nie są domyślnie w ścieżce include, ani Biblioteka Pythona nie jest domyślnie połączona z wykonywalnym. Musisz dodać te flagi (odpowiednio zastąpić wersję Pythona):

-I/usr/include/python2.7 -lpython2.7 

Innymi słowy twoje polecenie kompilacji powinno brzmieć:

gcc -Wall -I/usr/include/python2.7 -lpython2.7  utilsmodule.c -o Utilc 
 55
Author: vartec,
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
2014-02-03 15:13:31

Jeśli używasz Raspberry Pi:

sudo apt-get install python-dev
 44
Author: Malachi Bazar,
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-08-16 02:50:23

Na Fedorze uruchom to dla Pythona 2:

sudo dnf install python2-devel

I dla Pythona 3:

sudo dnf install python3-devel
 31
Author: ravi.zombie,
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
2017-08-22 15:24:05

Jeśli używasz tox do uruchamiania testów na wielu wersjach Pythona, może być konieczne zainstalowanie bibliotek programistów Pythona dla każdej wersji Pythona, na której testujesz.

sudo apt-get install python2.6-dev 
sudo apt-get install python2.7-dev 
etc.
 26
Author: Christian Long,
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-04-28 18:13:44

Chciałbym dodać również rozwiązanie dla Cygwin :

Musisz zainstalować pakiet python2-devel lub python3-devel, w zależności od używanej wersji Pythona.

Możesz szybko zainstalować go za pomocą 32-bitowegolub 64-bitowego setup.exe (w zależności od instalacji) od Cygwin.com .

Przykład (w razie potrzeby zmodyfikuj nazwę pliku setup.exe i główną wersję Pythona):

$ setup.exe -q --packages=python3-devel

Możesz też sprawdzić moją inną odpowiedź na jeszcze kilka opcji instalacji pakietów Cygwina z linii poleceń.

 21
Author: Dawid Ferenczy,
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
2018-01-08 11:31:30

W AWS API (centOS) its

yum install python27-devel
 18
Author: yespbs,
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-07-09 14:29:47

Dla mnie zmiana na to zadziałała:

#include <python2.7/Python.h>

Znalazłem plik /usr/include/python2.7/Python.h, A ponieważ /usr/include jest już w ścieżce include, to python2.7/Python.h powinno wystarczyć.

Możesz również dodać ścieżkę include z linii poleceń - gcc -I/usr/lib/python2.7 (dzięki @ erm3nda).

 18
Author: sashoalm,
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
2017-03-29 08:14:06

Upewnij się, że pliki deweloperów Pythona są dostarczane wraz z Twoim systemem operacyjnym.

Nie należy kodować na twardo biblioteki i dołączać ścieżek. Zamiast tego użyj pkg-config, który wyświetli odpowiednie opcje dla konkretnego systemu:

$ pkg-config --cflags --libs python2
-I/usr/include/python2.7 -lpython2.7

Możesz dodać go do swojej linii gcc :

gcc $(pkg-config --cflags --libs python2) -Wall utilsmodule.c -o Utilc
 14
Author: sleblanc,
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
2014-02-03 15:26:32

AWS EC2 install running python34:

sudo yum install python34-devel

 14
Author: orsonady,
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-12-12 22:57:40

To nie jest ta sama sytuacja, ale działa również dla mnie i teraz mogę użyć SWIG z Python3.5:

Próbowałem skompilować:

gcc -fPIC -c existe.c existe_wrap.c -I /usr/include/python3.5m/

Z Pythonem 2.7 działa dobrze, nie z moją wersją 3.5:

Existe_wrap.c: 147: 21: fatal error: Python.h: No existe el archivo o el kompilacja directorio zakończona.

Po uruchomieniu w moim Ubuntu 16.04 instalacja:

sudo apt-get install python3-dev  # for python3.x installs

Teraz mogę skompilować bez problemów Pyton3.5:

gcc -fPIC -c existe.c existe_wrap.c -I /usr/include/python3.5m/
 13
Author: Hugo L.M,
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
2018-09-05 12:11:03

W moim przypadku Naprawiono to w Ubuntu instalując Pakiety libpython-all-dev (LUB libpython3-all-dev Jeśli używasz Pythona 3).

 12
Author: Oriol Nieto,
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-02-01 01:27:33

Jeśli używasz virtualenv z Pythonem 3.6 (krawędź teraz), pamiętaj, aby zainstalować pasujący python 3.6 dev sudo apt-get install python3.6-dev, w przeciwnym razie wykonując sudo python3-dev zainstaluje Python dev 3.3.3-1, który nie rozwiąże problemu.

 12
Author: Guillaume Cisco,
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
2017-05-09 11:46:54

Udało mi się rozwiązać ten problem i wygenerować plik. so w jednym poleceniu

gcc -shared -o UtilcS.so
-fPIC -I/usr/include/python2.7 -lpython2.7  utilsmodule.c
 11
Author: Mohanad Y.,
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-01-29 01:43:48

Spróbuj apt-file. Trudno jest zapamiętać nazwę pakietu, w którym znajduje się brakujący plik. Jest ogólny i przydatny dla wszystkich plików pakietów.

Na przykład:

root@ubuntu234:~/auto# apt-file search --regexp '/Python.h$'
pypy-dev: /usr/lib/pypy/include/Python.h
python2.7-dbg: /usr/include/python2.7_d/Python.h
python2.7-dev: /usr/include/python2.7/Python.h
python3.2-dbg: /usr/include/python3.2dmu/Python.h
python3.2-dev: /usr/include/python3.2mu/Python.h
root@ubuntu234:~/auto# 

Teraz możesz zgadnąć eksperta, który wybrać.

 9
Author: Venfah Nazir,
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-11-03 12:43:21

Dla towarzyszy OpenSuse:

sudo zypper install python3-devel
 8
Author: kmonsoor,
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-03-29 05:47:51

Dla CentOS 7:

sudo yum install python36u-devel

Zastosowałem się do instrukcji instalacji python3. 6 na kilku maszynach wirtualnych: https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-local-programming-environment-on-centos-7 następnie był w stanie zbudować mod_wsgi i uruchomić go z python3. 6 virtualenv

 8
Author: Steve G,
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
2017-11-27 16:41:18

Napotkałem również ten błąd podczas instalacji coolprop w ubuntu.

Dla ubuntu 16.04 z Pythonem 3.6

sudo apt-get install python3.6-dev

Jeśli to nie zadziała, spróbuj zainstalować / zaktualizować gcc lib.

sudo apt-get install gcc
 6
Author: Wreeecks,
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
2018-05-14 01:58:00

Ten błąd wystąpił, gdy próbowałem zainstalować ctds na CentOS 7 z Python3. 6. Zrobiłem wszystkie sztuczki wymienione tutaj, w tym yum install python34-devel. Problem był Python.h został znaleziony w /usr/include/python3.4m but not in /usr/include/python3.6m. Próbowałem użyć --global-option, aby wskazać na dołączenie dir (pip3.6 install --global-option=build_ext --global-option="--include-dirs=/usr/include/python3.4m" ctds). To spowodowało, że lpython3.6m nie znaleziono podczas łączenia CTD.

W końcu udało się naprawić środowisko programistyczne dla Python3. 6, które musi poprawić za pomocą include i libs.

yum -y install https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/python36u-libs-3.6.3-1.ius.centos7.x86_64.rpm

Python.h musi być w twojej ścieżce dołączania do gcc. Bez względu na to, która wersja Pythona jest używana, na przykład jeśli jest to 3.6, to powinna być zazwyczaj w /usr/include/python3.6m/Python.h.

 4
Author: Babu Arunachalam,
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
2017-11-04 06:19:26

Sure python-dev or libpython-all-dev are the first thing to (apt )install, ale jeśli to nie pomoże, Jak to było w moim przypadku, radzę zainstalować foreign Function Interface pakiety przez sudo apt-get install libffi-dev i sudo pip install cffi.

To powinno pomóc, zwłaszcza jeśli widzisz Błąd jako / from c/_cffi_backend.c:2:20: fatal error: Python.h: No such file or directory.

 4
Author: Huge,
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
2018-07-22 20:35:17

Często pojawia się, gdy próbujesz usunąć python3.5 i zainstalować python3.6.

Więc przy użyciu python3 (Które python3 -V => python3.6) Aby zainstalować niektóre pakiety wymagane python3.5 nagłówek pojawi się ten błąd.

Rozwiąż moduł install python3.6-dev.

 2
Author: dphans,
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
2018-04-14 07:38:00

Oznacza to, że {[0] }nie znajduje się w domyślnych ścieżkach dołączania kompilatora. Zainstalowałeś system informatyczny w całym systemie lub lokalnie? Jaki jest Twój system operacyjny?

Możesz użyć znacznika -I<path>, aby określić dodatkowy katalog, w którym kompilator powinien szukać nagłówków. Prawdopodobnie będziesz musiał śledzić -L<path>, aby gcc mógł znaleźć bibliotekę, z którą będziesz linkował za pomocą -l<name>.

 1
Author: Kos,
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
2014-02-03 15:12:09

Jeśli używasz Pythona 3.6 na Amazon Linux (oparty na RHEL, ale odpowiedzi RHEL podane tutaj nie zadziałały):

sudo yum install python36-devel
 1
Author: Yigal,
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
2018-02-13 13:56:21

Czasami nawet po zainstalowaniu python-dev błąd nadal występuje, Sprawdź błąd, jeśli brakuje 'gcc'.

Pierwsze pobranie jak podano w https://stackoverflow.com/a/21530768/8687063 , następnie zainstaluj gcc

Dla apt( Ubuntu, Debian...):

sudo apt-get install gcc

For yum (CentOS, RHEL...):

sudo yum install gcc

Dla dnf (Fedora...):

sudo dnf install gcc

Dla zypper (openSUSE...):

sudo zypper in gcc

Dla apk (Alp...):

sudo apk gcc
 1
Author: HimanshuGahlot,
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
2018-06-28 00:41:05