Фатальная ошибка: Python.h: Файл или каталог не найден
Я пытаюсь создать общую библиотеку, используя файл расширения C, но сначала мне нужно сгенерировать выходной файл с помощью следующей команды:
gcc -Wall utilsmodule.c -o Utilc
После выполнения команды я получаю следующую ошибку:
utilsmodule.c:1:20: fatal error: Python.h: No such file or directory
compilation terminated.
Я пробовал все предлагаемые решения в интернете, но проблема по-прежнему существует. У меня нет проблем с файлом Python.h
, я смог его найти на своем компьютере.
5 ответ(ов)
Похоже, вы не установили необходимые заголовочные файлы и статические библиотеки для разработки с Python. Вам следует использовать ваш пакетный менеджер для установки их в системе.
Для apt
(Ubuntu, Debian...):
sudo apt-get install python-dev # для Python 2.x
sudo apt-get install python3-dev # для Python 3.x
Для yum
(CentOS, RHEL...):
sudo yum install python-devel # для Python 2.x
sudo yum install python3-devel # для Python 3.x
Для dnf
(Fedora...):
sudo dnf install python2-devel # для Python 2.x
sudo dnf install python3-devel # для Python 3.x
Для zypper
(openSUSE...):
sudo zypper in python-devel # для Python 2.x
sudo zypper in python3-devel # для Python 3.x
Для apk
(Alpine...):
# Это отличается от обычной схемы именования Alpine,
# которая использует префиксы py2- и py3-
sudo apk add python2-dev # для Python 2.x
sudo apk add python3-dev # для Python 3.x
Для apt-cyg
(Cygwin...):
apt-cyg install python-devel # для Python 2.x
apt-cyg install python3-devel # для Python 3.x
Важно: python3-dev/devel не охватывает все минорные версии Python 3 автоматически.
Например, если вы используете Python 3.11, возможно, вам потребуется установить python3.11-dev
/ python3.11-devel
.
На Ubuntu я использовал Python 3 и мне нужно было установить
sudo apt-get install python3-dev
Если вы хотите использовать версию Python, которая не связана с python3, установите соответствующий пакет python3.x-dev. Например:
sudo apt-get install python3.5-dev
Для Python 3.7 и Ubuntu в частности, мне понадобилось выполнить:
sudo apt install libpython3.7-dev
Я думаю, что в какой-то момент названия были изменены с pythonm.n-dev
на это.
Для Python 3.6, 3.8, 3.9, 3.10 (и других версий) аналогично:
sudo apt install libpython3.6-dev
sudo apt install libpython3.8-dev
sudo apt install libpython3.9-dev
sudo apt install libpython3.10-dev
sudo apt install libpython3.11-dev
sudo apt install libpython3.12-dev
Чтобы решить вашу проблему, выполните два шага.
Первое: установите пакет для разработки Python. Если вы используете Debian, Ubuntu или Mint, выполните следующую команду в терминале:
sudo apt-get install python-dev
Второе: файлы заголовков по умолчанию не включены в путь поиска, и библиотека Python не связана с исполняемым файлом автоматически. Вам необходимо добавить следующие флаги (замените версию Python на нужную):
-I/usr/include/python2.7 -lpython2.7
Иными словами, ваша команда компиляции должна выглядеть следующим образом:
gcc -Wall -I/usr/include/python2.7 -lpython2.7 utilsmodule.c -o Utilc
Надеюсь, это поможет!
Чтобы установить разработческие пакеты для Python на Fedora, выполните следующие команды в терминале:
Для Python 2:
sudo dnf install python2-devel
Для Python 3:
sudo dnf install python3-devel
Эти команды установят необходимые заголовочные файлы и библиотеки для разработки с использованием соответствующих версий Python.
Вызов функции модуля по его имени (строке)
Как напечатать без новой строки и пробела
Изменение типа столбца в pandas
Что такое __pycache__?
Как заполнить строку в Python пробелами?