Ответ 1
Вам нужен пакет python-dev
, содержащий Python.h
Я на школьном компьютере, поэтому ничего не могу установить.
Я пытаюсь создать C-код, который можно запустить в Python. Кажется, что все статьи, которые я нахожу, требуют, чтобы вы использовали
#include <Python.h>
Я делаю это, но когда компилирую, он жалуется, что такого файла или каталога нет.
Компьютер имеет Python (по крайней мере, он имеет команду python
в терминале, и мы можем запускать любой код Python, который нам нужен).
Я набрал locate Python.h
в терминале, но ничего не нашел.
У меня есть два вопроса:
Могу ли я написать код C, который я могу вызвать в Python без Python.h
?
Мне что-то не хватает, и на самом деле у компьютера есть Python.h
?
Вам нужен пакет python-dev
, содержащий Python.h
В Ubuntu вам нужно будет установить пакет под названием python-dev
. Поскольку этот пакет, похоже, не установлен (locate Python.h
ничего не нашел), и вы не можете его самостоятельно установить самостоятельно, нам нужно другое решение.
Вы можете установить Python в свой домашний каталог - для этого вам не нужны специальные разрешения. Если вам разрешено использовать веб-браузер и запустить gcc, это должно сработать для вас. С этой целью
Загрузите исходный архив.
Разархивируйте с помощью
tar xjf Python-2.7.2.tar.bz2
Создайте и установите с помощью
cd Python-2.7.2
./configure --prefix=/home/username/python --enable-unicode=ucs4
make
make install
Теперь у вас есть полная установка Python в вашем домашнем каталоге. Передайте -I /home/username/python/include
в gcc при компиляции, чтобы сообщить об этом Python.h
. При связывании передайте -L /home/username/python/lib
и -lpython2.7
.
Вы должны использовать #include "python2.7/Python.h" вместо #include "Python.h".
На ubuntu вы можете просто набрать sudo apt-get install python-dev -y
в терминале, чтобы установить пакет python-dev.
Для Ubuntu 15.10 и Python 3, переходя к этому вопросу, поскольку у них нет Python.h
, но имеющих права администратора, это может решить следующее:
sudo apt-get install python-dev
sudo apt-get install python3-dev
sudo apt-get install libpython3-dev
sudo apt-get install libpython3.4-dev
sudo apt-get install libpython3.5-dev
Заголовочные файлы теперь предоставляются libpython2.7-dev.
Вы можете использовать форму поиска на packages.ubuntu.com, чтобы узнать, какой пакет предоставляет Python.h
.
Я столкнулся с тем же вопросом, пытаясь создать очень старую копию omniORB на машине CentOS 7. Устранена проблема, установив библиотеки разработки python:
# yum install python-devel
Это установило Python.h в:
/usr/include/python2.7/Python.h
Вам нужно установить python-dev.
Для Ubuntu:
sudo apt-get install python-dev # for python2.x installs
sudo apt-get install python3-dev # for python3.x installs
Для получения дополнительных дистрибутивов обратитесь -
fooobar.com/questions/36905/...
Перейдите в диспетчер пакетов Synaptic. Reload → Поиск python → выберите нужный пакет python → Submit → Install Работает для меня;)
Точно, пакет, который вам нужно установить, это python-dev.
Это означает, что вы не устанавливаете библиотеки для python dev.
Если вы находитесь в ОС Linux, вы можете решить эту проблему с помощью команд отдельно ниже:
Ubuntu (Debian):
sudo apt-get install python-dev
(Py2) или sudo apt-get install python3-dev
(Py3)
Rehat (CentOS):
yum install python-devel
Это происходит потому, что Python.h
не находится в папке include по умолчанию (которая /usr/include/
).
Установка Python-dev может помочь:
$ sudo apt-get install python-dev
Но в основном проблема будет сохраняться, потому что пакеты разработки создаются внутри отдельной папки внутри самой папки include (/usr/include/python2.7
или python3
).
Таким образом, вы должны либо указать папку библиотеки, используя опцию -I
в gcc
, либо путем создания софт-ссылок ко всем внутри этих папок сразу (я бы предпочел бывшую опцию).
Использование опции -I
в gcc
:
$ gcc -o hello -I /usr/include/python2.7 helloworld.c
Создание софт-ссылок:
$ sudo ln -sv /usr/include/python2.7/* /usr/include/