неустранимая ошибка: Python.ч: нет такого файла или каталога
Я пытаюсь построить общую библиотеку, используя файл расширения C, но сначала я должен создать выходной файл, используя команду ниже:
gcc -Wall utilsmodule.c -o Utilc
после выполнения команды, я получаю это сообщение об ошибке:
utilsmodule.c: 1: 20: неустранимая ошибка: Python.ч: нет такого файла или каталога компиляция завершена.
на самом деле я пробовал все предложенные решения в интернете, но проблема все еще существует ... также у меня нет проблем с Python.h
. Мне удалось найти файл на моей машине ... кто-нибудь сталкивался с такой же проблемой раньше??
25 ответов:
Похоже, вы неправильно установили заголовочные файлы и статические библиотеки для python dev. Используйте диспетчер пакетов для их установки на всей системе.
на
apt
(Ubuntu, Debian...):sudo apt-get install python-dev # for python2.x installs sudo apt-get install python3-dev # for python3.x installs
на
yum
(CentOS, RHEL...):sudo yum install python-devel # for python2.x installs sudo yum install python34-devel # for python3.4 installs
на
dnf
(Федора...):sudo dnf install python2-devel # for python2.x installs sudo dnf install python3-devel # for python3.x installs
на
zypper
(openSUSE...):sudo zypper in python-devel # for python2.x installs sudo zypper in python3-devel # for python3.x installs
для
apk
(Альпийский...):# 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
на
apt-cyg
(Cygwin...):apt-cyg install python-devel # for python2.x installs apt-cyg install python3-devel # for python3.x installs
на Ubuntu я запускал Python 3, и мне пришлось установить
sudo apt-get install python3-dev
Если вы хотите использовать версию Python, которая не связана с python3, установите связанный python3.пакет x-dev. Например:
sudo apt-get install python3.5-dev
две вещи, которые вы должны сделать.
установите пакет разработки для Python, в случае Debian / Ubuntu / Mint это делается с помощью команды:
sudo apt-get install python-dev
во-вторых, файлы include по умолчанию не находятся в пути include, а библиотека Python не связана с исполняемым файлом по умолчанию. Вам нужно добавить эти флаги (замените версию Python соответственно):
-I/usr/include/python2.7 -lpython2.7
другими словами, ваша команда компиляции должна быть:
gcc -Wall -I/usr/include/python2.7 -lpython2.7 utilsmodule.c -o Utilc
на Fedora запустите это для Python 2:
sudo dnf install python2-devel
и для Python 3:
sudo dnf install python3-devel
Если вы используете tox чтобы выполнить тесты на нескольких версиях Python, вам может потребоваться установить библиотеки python dev для каждой версии Python, на которой вы тестируете.
sudo apt-get install python2.6-dev sudo apt-get install python2.7-dev etc.
Я хотел бы добавить также раствор для программа:
вам нужно установить пакет
python2-devel
илиpython3-devel
, в зависимости от используемой версии Python.вы можете быстро установить его с помощью 32-бит или 64-бит
setup.exe
(в зависимости от вашей установки) от Cygwin.com.пример (изменить
setup.exe
имя файла и основная версия Python, если вы нужно):$ setup.exe -q --packages=python3-devel
вы также можете проверить мои другого ответа еще несколько вариантов установки пакетов Cygwin из командной строки.
для меня изменение его на это сработало:
#include <python2.7/Python.h>
я нашел файл
/usr/include/python2.7/Python.h
, и с/usr/include
уже в пути, тоpython2.7/Python.h
должно быть достаточно.вы также можете добавить путь включения из командной строки вместо -
gcc -I/usr/lib/python2.7
(спасибо @erm3nda).
убедитесь, что файлы Python dev поставляются с вашей ОС.
вы не должны жестко кодировать библиотеку и включать пути. Вместо этого используйте pkg-config, который выведет правильные параметры для вашей конкретной системы:
$ pkg-config --cflags --libs python2 -I/usr/include/python2.7 -lpython2.7
Вы можете добавить его в свой gcc строку:
gcc $(pkg-config --cflags --libs python2) -Wall utilsmodule.c -o Utilc
Это не та же ситуация, но она также работает для меня, и теперь я могу использовать глоток С Питон3.5:
Я пытался скомпилировать:
gcc -fPIC -c existe.c existe_wrap.c -I /usr/include/python3.5m/
С Python 2.7 работает нормально, а не с моей версией 3.5:
existe_wrap.c: 147: 21: фатальная ошибка: Python.h: No existe el archivo o el справочник компиляция прекращается.
после запуска в моем Ubuntu 16.04 установка:
sudo apt-get install python3-dev # for python3.x installs
теперь я могу компилировать без проблем Python3. 5:
gcc -fPIC -c existe.c existe_wrap.c -I /usr/include/python3.5m/
в моем случае, что исправлено в Ubuntu было установить пакеты
libpython-all-dev
(илиlibpython3-all-dev
Если вы используете Python 3).
Если вы используете virtualenv с 3.6 python (edge прямо сейчас), обязательно установите соответствующий python 3.6 dev
sudo apt-get install python3.6-dev
, иначе выполняетсяsudo python3-dev
установит python dev 3.3.3-1, который не решит проблему.
мне удалось решить эту проблему и создать файл. so в одной команде
gcc -shared -o UtilcS.so -fPIC -I/usr/include/python2.7 -lpython2.7 utilsmodule.c
попробуйте apt-file. Трудно запомнить имя пакета, в котором находится отсутствующий файл. Он является общим и полезным для любых файлов пакетов.
например:
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#
теперь вы можете сделать экспертную догадку о том, какой из них выбрать.
Для CentOS 7:
sudo yum install python36u-devel
я следовал инструкциям здесь для установки python3. 6 на нескольких виртуальных машинах: https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-local-programming-environment-on-centos-7 и затем смог построить mod_wsgi и заставить его работать с python3. 6 virtualenv
Я также столкнулся с этой ошибкой, когда я устанавливал coolprop в ubuntu.
для ubuntu 16.04 с python 3.6
sudo apt-get install python3.6-dev
Если когда-либо это не работает попробуйте установить/обновить
gcc
lib.sudo apt-get install gcc
эта ошибка произошла, когда я попытался установить ctds на CentOS 7 С Python3.6. Я сделал все трюки, упомянутые здесь в том числе
yum install python34-devel
. Проблема былаPython.h
встретился в/usr/include/python3.4m but not in /usr/include/python3.6m
. Я пытался использовать--global-option
чтобы указать на включение dir (pip3.6 install --global-option=build_ext --global-option="--include-dirs=/usr/include/python3.4m" ctds
). Это привело кlpython3.6m
не найден при связывании ctds.наконец, то, что работало, исправляло среду разработки для Python3.6, необходимо исправить с помощью include и 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.ч должен быть в вашем пути к ССЗ. Какая бы версия python ни использовалась, например, если это 3.6, то она должна быть в
/usr/include/python3.6m/Python.h
обычно.
обязательно
python-dev
илиlibpython-all-dev
Это первое, что нужно (apt
)install
, а если это не поможет, как было в моем случае, я советую вам установить внешний интерфейс функции пакетыsudo apt-get install libffi-dev
иsudo pip install cffi
.это должно помочь, особенно если вы видите ошибки, как/с
c/_cffi_backend.c:2:20: fatal error: Python.h: No such file or directory
.
часто появляется, когда вы пытаетесь удалить
python3.5
и установитьpython3.6
.так что при использовании
python3
(гдеpython3 -V
=>python3.6
) для установки некоторых пакетов, требуемыхpython3.5
заголовок появится эта ошибка.решить путем установки
python3.6-dev
модуль.
Это означает, что
Python.h
не входит в пути включения вашего компилятора по умолчанию. Вы установили его на всей системе или локально? Какая у тебя ОС?вы могли бы использовать
-I<path>
флаг для указания дополнительного каталога, в котором компилятор должен искать заголовки. Вам, вероятно, придется следить за-L<path>
Так что gcc может найти библиотеку, которую вы будете связывать с помощью-l<name>
.
Если вы используете Python 3.6 на Amazon Linux (на основе RHEL, но ответы RHEL, приведенные здесь, не работают):
sudo yum install python36-devel
иногда даже после установки python-dev ошибка сохраняется, Проверьте наличие ошибки, если это' gcc ' отсутствует.
первая загрузка, как указано в https://stackoverflow.com/a/21530768/8687063, затем установите gcc
для apt (Ubuntu, Debian...):
sudo apt-get install gcc
для yum (CentOS, RHEL...):
sudo yum install gcc
для dnf (Fedora...):
sudo dnf install gcc
для zypper (openSUSE...):
sudo zypper in gcc
для apk (Alpine...):
sudo apk gcc