Если при компиляции программы вы получаете ошибку, что отсутствует файл Python.h, то необходимо установить дополнительный пакет.
Вам нужно обратить внимание, какая версия Python используется для компиляции программы: 2.x или 3.x. Файлы заголовков помещены в различные пакеты для этих версий, поэтому вам нужно установить правильный пакет, в соответствии с используемой при компиляции версией Python. В большинстве популярных дистрибутивов требуемый пакет имеется в стандартном репозитории, поэтому установка выполняется в одну команду.
Текст ошибки может чуть различаться, в зависимости от того, в каком файле она возникла. Примеры сообщений:
url/url.cpp:4:10: fatal error: Python.h: Нет такого файла или каталога #include "Python.h" ^~~~~~~~~~ compilation terminated. error: Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
Ещё одно:
utilsmodule.c:1:20: fatal error: Python.h: No such file or directory compilation terminated.
Самой вероятной причиной этого является то, что не установлены файлы заголовка и статичных библиотек для python dev. Для установки их на системном уровне используйте менеджер пакетов для вашего дистрибутива.
Для apt (Ubuntu, Debian, Kali Linux, Linux Mint...):
Если программа компилируется для python2.x, то выполните команду:
sudo apt install python-dev
Если программа компилируется для python3.x, то выполните команду:
sudo apt install python3-dev
Для yum (CentOS, RHEL...):
Для python2.x:
sudo yum install python-devel
Для python3.4:
sudo yum install python34-devel
Если вам нужно установить для других версий Python, то замените цифры на нужные, например:
sudo yum install python36u-devel
Для dnf (Fedora...):
Для python2.x:
sudo dnf install python2-devel
Для python3.x:
sudo dnf install python3-devel
Для zypper (openSUSE...):
Для python2.x:
sudo zypper in python-devel
Для python3.x:
sudo zypper in python3-devel
Если после установки заголовков проблема не исчезла, то возможно, что вы выбрали неверную версию Python.
Связанные статьи:
- Исправление ошибки error: postfix/master: fatal: 0.0.0.0:smtps: Servname not supported for ai_socktype (55.8%)
- Как правильно и навсегда исправить ошибку «E: Не удалось получить доступ к файлу блокировки /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)» (55.8%)
- Решение проблемы: не найдена определённая версия библиотеки (55.8%)
- Решение проблемы с ошибкой «bash: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла» (55.8%)
- Убираем ошибку «PAM unable to dlopen(/usr/lib/security/pam_gnome_keyring.so)» (55.8%)
- Как установить драйвер для Wi-Fi Mediatek MT7921 и Mediatek MT7961 в Linux (RANDOM - 5.8%)
А в винде как?
Кажется, для Windows нет пакета python-dev. Но установщик Python для Windows обычно устанавливает подкаталог внутри основного каталога Python.
Итак, с Python в C:\Python вы получите:
Внутри каталога include вы найдёте Python.h, который можно включить или на который можно сослаться.