У меня Python на моей системе Ubuntu, но gcc не может найти Python.h

Я на школьном компьютере, поэтому ничего не могу установить.

Я пытаюсь создать C-код, который можно запустить в Python. Кажется, что все статьи, которые я нахожу, требуют, чтобы вы использовали

#include <Python.h>

Я делаю это, но когда компилирую, он жалуется, что такого файла или каталога нет.

Компьютер имеет Python (по крайней мере, он имеет команду python в терминале, и мы можем запускать любой код Python, который нам нужен).

Я набрал locate Python.h в терминале, но ничего не нашел.

У меня есть два вопроса:

  • Могу ли я написать код C, который я могу вызвать в Python без Python.h?

  • Мне что-то не хватает, и на самом деле у компьютера есть Python.h?

Ответ 1

Вам нужен пакет python-dev, содержащий Python.h

Ответ 2

В 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.

Ответ 3

Вы должны использовать #include "python2.7/Python.h" вместо #include "Python.h".

Ответ 4

На ubuntu вы можете просто набрать sudo apt-get install python-dev -y в терминале, чтобы установить пакет python-dev.

Ответ 5

Для 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

Ответ 7

Я столкнулся с тем же вопросом, пытаясь создать очень старую копию omniORB на машине CentOS 7. Устранена проблема, установив библиотеки разработки python:

# yum install python-devel

Это установило Python.h в:

/usr/include/python2.7/Python.h

Ответ 8

Вам нужно установить 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/...

Ответ 9

Перейдите в диспетчер пакетов Synaptic. Reload → Поиск python → выберите нужный пакет python → Submit → Install Работает для меня;)

Точно, пакет, который вам нужно установить, это python-dev.

Ответ 10

Это означает, что вы не устанавливаете библиотеки для 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

Ответ 11

Это происходит потому, что 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/