У меня есть Python в моей системе Ubuntu, но gcc не может найти Python.h - PullRequest
49 голосов
/ 27 ноября 2011

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

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

#include <Python.h>

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

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

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

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

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

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

Ответы [ 12 ]

47 голосов
/ 27 ноября 2011

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

42 голосов
/ 27 ноября 2011

В Ubuntu вам необходимо установить пакет с именем python-dev. Поскольку этот пакет, похоже, не установлен (locate Python.h ничего не нашел), и вы не можете установить его для всей системы самостоятельно, нам нужно другое решение.

Вы можете установить Python в свой домашний каталог - вам не нужны никакие специальные разрешения для этого. Если вам разрешено использовать веб-браузер и запускать gcc, это должно работать для вас. С этой целью

  1. Скачать архив с исходным кодом .

  2. Распаковать с

    tar xjf Python-2.7.2.tar.bz2
    
  3. Сборка и установка с

    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 при связывании.

30 голосов
/ 13 октября 2013

Вы должны использовать #, включая «python2.7 / Python.h» вместо #, включать «Python.h» .

24 голосов
/ 15 ноября 2015

Для 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
16 голосов
/ 08 февраля 2013

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

6 голосов
/ 31 мая 2013

Файлы заголовка теперь предоставляются libpython2.7-dev .

Вы можете использовать форму поиска на packages.ubuntu.com , чтобы узнать, какой пакет предоставляет Python.h.

5 голосов
/ 28 ноября 2017

Вам нужен установленный python-dev.
Для Ubuntu:
sudo apt-get install python-dev # for python2.x installs sudo apt-get install python3-dev # for python3.x installs
Для более дистрибутивов, обратитесь -
https://stackoverflow.com/a/21530768/6841045

4 голосов
/ 12 марта 2018

Я нашел ответ в ubuntuforums ( ubuntuforums ), вы можете просто добавить его в свой gcc '$ (python-config --includes)'

gcc $(python-config --includes) urfile.c
4 голосов
/ 17 октября 2015

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

# yum install python-devel

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

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

1 голос
/ 27 ноября 2011

Зайдите в менеджер пакетов Synaptic.Перезагрузка -> Поиск python -> выберите нужный пакет python -> Отправить -> Установить Работает для меня;)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...