Include python h linux

[C/C++] использование Python.h и png.h в одном модуле

Неожиданно вылезла проблема при включении Python.h и png.h в один модуль. Если png.h идет первым, сыпятся ворнинги (с -Wall)

Если Python.h идет первым, вылетает ощибка

Кто нить может сказать что с этим делать, кроме как разнести использование png.h и Python.h по разным модулям?

Note Since Python may define some pre-processor definitions which affect the standard headers on some systems, you must include Python.h before any standard headers are included.

Так что png.h до Python.h инклюдить точно не надо.

Открой /usr/include/pngconf.h, прочитай, что написано, затем прочитай, что написано в конце файла INSTALL в исходниках libpng.

Если кратко, то нужно закомментировать две строчки в /usr/include/pngconf.h

я бы разнес это по двум сишникам и не парил бы мозг

и так делать на каждой машине где собираешь? это неправильно

#define PNG_SKIP_SETJMP_CHECK 1

Тока лучше почитай для чего это нужно

Это понятно, но это костыль. Авторы не даром же поставили эту проверку. хотелось бы знать какие могут от этого потом грабли.

Не можешь сам — посмотри у соседа

костыль это то что они внутри сделали. Кроме того, по-хорошему, Python.h надо включать до png.h.

Какой ужас. Что они там намутили? Неужели там никак нельзя было сделать по человечески?

Типа идея в том что в линухе есть две реализации setjmp(пруфов не нашёл), не совместимые между собой. И у обоих есть setjmp.h. Так вот libpng пытается не допустить включения различных версий setjmp.h. Только делает как-то это через опу.

То есть не через опу — это отменить эту поверку?

У меня напр (debian 6.0)

То есть не через опу — это отменить эту поверку?

предложи лучшее решение.

второй подключается в первом. Всё что в bits это только для служебного пользования, напрямую эти хедеры не подключаются.

> предложи лучшее решение.

Не могу — не чувствую критериев качества в данном случае;-( Ок, спасибо.

Источник

Debian / Ubuntu: Fatal error: Python.h: No such file or Directory

gcc -pthread -fno-strict-aliasing -fwrapv -Wall -Wstrict-prototypes -fPIC -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/usr/include/python2.7 -c src/MD2.c -o build/temp.linux-x86_64-2.7/src/MD2.o

src/MD2.c:31:20: fatal error: Python.h: No such file or directory

error: command ‘gcc’ failed with exit status 1

Tutorial details
Difficulty level Easy
Root privileges Yes
Requirements None
Est. reading time N/A

Where can I find Python.h file and how do I fix this problem under Debian or Ubuntu Linux sever based system?

Python.h is nothing but a header file. It is used by gcc to build applications. You need to install a package called python-dev. This package includes header files, a static library and development tools for building Python modules, extending the Python interpreter or embedding Python in applications. To install this package, enter:

For Python version 2.x+

$ sudo apt-get install python-dev
OR
# apt-get install python-dev

  • No ads and tracking
  • In-depth guides for developers and sysadmins at Opensourceflare✨
  • Join my Patreon to support independent content creators and start reading latest guides:
    • How to set up Redis sentinel cluster on Ubuntu or Debian Linux
    • How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
    • How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
    • A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
    • How to protect Linux against rogue USB devices using USBGuard

Join Patreon

For Python version 3.x+

$ sudo apt-get install python3-dev
OR
# apt-get install python3-dev
Sample outputs (for my python 2.x):

Now, you can compile or build any python based modules.

🐧 Get the latest tutorials on Linux, Open Source & DevOps via

Category List of Unix and Linux commands
Documentation help • mandb • man • pinfo
Disk space analyzers df • duf • ncdu • pydf
File Management cat • cp • less • mkdir • more • tree
Firewall Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04
Linux Desktop Apps Skype • Spotify • VLC 3
Modern utilities bat • exa
Network Utilities NetHogs • dig • host • ip • nmap
OpenVPN CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04
Package Manager apk • apt
Processes Management bg • chroot • cron • disown • fg • glances • gtop • jobs • killall • kill • pidof • pstree • pwdx • time • vtop
Searching ag • grep • whereis • which
Shell builtins compgen • echo • printf
Text processing cut • rev
User Information groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w
WireGuard VPN Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04

Comments on this entry are closed.

Thanks for this! Also I had to

To get it to work again – because the previous results had been cached!

That saved me 🙂 Thanks!

In my case (building pyskein) I needed the python3-dev package.

Thanks for the tip on the python3 bit. I was running the command listed on and linux was telling me everything was up to date.

Tnx for your post

Thank you.
Really helped me. 😀

For Fedora it is:

yum install python-devel

Does not work for me. I get the error “no installation candidate”.

thank you for help

I have installed python-dev but still..
fatal error: Python.h: No such file or directory
compilation terminated.

Are you using Python3? If so, you have to install python3-dev package.

Yeah you have to use python3-dev

sudo apt-get install python3-dev

src/main/Session.cpp:21:25: fatal error: cms/Session.h: No such file or directory
compilation terminated.
error: command ‘gcc’ failed with exit status 1…
while python setup.py build

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -DBOOST_PYTHON_NO_PY_SIGNATURES=1 -DPYACTIVEMQ_ENABLE_DOCSTRINGS=0 -Ipython_activemq_libs/activemq-cpp-cppVersion/include/activemq-cpp-cppVersion -I/usr/include/python2.7 -c src/main/Session.cpp -o build/temp.linux-x86_64-2.7/src/main/Session.o
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for Ada/C/ObjC but not for C++ [enabled by default]
src/main/Session.cpp:21:25: fatal error: cms/Session.h: No such file or directory
compilation terminated.
error: command ‘gcc’ failed with exit status 1

hi i used the following code and got the result as follows
$ gcc -c arith.c arith_wrap.c \-I/usr/local/include/python2.7
arith_wrap.c:125:20: fatal error: Python.h: No such file or directory
compilation terminated.
ttl@ttl-HP-Z220-CMT-Workstation:

i did sudo apt-get to install python 2.7 and it showed my library is updated.. the error repeats.. please give some suggestion…

Gracias, me funciuono a la primera

sudo apt-get install python2.7-dev

Thenk you, second time this post help for me 🙂

Источник

фатальная ошибка: Python.h: нет такого файла или каталога

Я пытаюсь создать разделяемую библиотеку, используя файл расширения C, но сначала мне нужно сгенерировать выходной файл, используя следующую команду:

После выполнения команды я получаю это сообщение об ошибке:

utilsmodule.c: 1: 20: фатальная ошибка: Python.h: компиляция такого файла или каталога не прекращена.

Я попробовал все предложенные решения через Интернет, но проблема все еще существует. У меня нет проблем с Python.h . Мне удалось найти файл на моей машине.

25 ответов

Мне удалось решить эту проблему и создать файл .so в одной команде

Это означает, что Python.h отсутствует в путях включения вашего компилятора по умолчанию. Вы установили его для всей системы или локально? Какая у тебя ОС?

Вы можете использовать флаг -I

, чтобы указать дополнительный каталог, в котором ваш компилятор должен искать заголовки. Вероятно, вам придется использовать -L

, чтобы gcc мог найти библиотеку, с которой вы связываетесь, используя -l .

Конечно, 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 .

В AWS API (centOS) его

Две вещи, которые вы должны сделать.

Установите пакет разработки для Python, в случае Debian / Ubuntu / Mint это делается командой:

Во-вторых, файлы включения по умолчанию не включены в путь включения, и библиотека Python не связана с исполняемым файлом по умолчанию. Вам необходимо добавить эти флаги (соответственно замените версию Python):

Другими словами, ваша команда компиляции должна быть:

Похоже, вы неправильно установили заголовочные файлы и статические библиотеки для python dev. Используйте менеджер пакетов, чтобы установить их для всей системы.

Для apt ( Ubuntu, Debian . ):

Для yum ( CentOS, RHEL . ):

Для dnf ( Fedora . ):

Для zypper ( openSUSE . ):

Для apk ( Альпийский . ):

Для apt-cyg ( Cygwin . ):

Иногда даже после установки python-dev ошибка сохраняется. Проверьте на наличие ошибки, если отсутствует «gcc».

Сначала загрузите, как указано в https://stackoverflow.com/a/21530768/8687063, затем установите gcc

Для apt (Ubuntu, Debian . ):

Для yum (CentOS, RHEL . ):

Для dnf (Fedora . ):

Для zypper (openSUSE . ):

Для apk (Alpine . ):

Эта ошибка произошла, когда я попытался установить 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.

Python.h должен быть в вашем пути включения для gcc. Какая бы версия Python ни использовалась, например, если она равна 3,6, она обычно должна быть в /usr/include/python3.6m/Python.h .

Источник

Python.h: Нет такого файла или каталога

Недавно я установил KDevelop 4 для разработки на С++ на моем Macbook Pro, работающем под Ubuntu 12.04 LTS.

Я хочу встроить приложение Python в свой код на С++. Для этого нужно включить заголовочный файл Python.h. Итак, я сделал это.

Однако при запуске я получил следующий ответ от IDE:

Однако я нашел проблему достаточно скоро. Я не загрузил пакет python-dev. Итак, я сделал это. Я снова побежал, но та же ошибка была снова. Итак, я думал, что проблема должна быть связана с тем, что заголовочный файл не включен KDevelop. Таким образом, я добавил соответствующую папку в путь include, и KDevelop сразу же узнал, что, удалив красную подчеркивание под вторым оператором include в приведенном выше коде.

Но все же проблема остается. Я получаю ту же ошибку. Поблагодарите любую помощь или материалы, которые вы, ребята, можете предоставить: -)

EDIT: некоторые подробности, о которых я пропустил ранее упоминание, это то, что KDevelop использует cmake для моего проекта. Я думаю, причина, по которой возникает моя проблема, заключается в том, что cmake не знает соответствующие пути компилятора и компоновщика. Я был бы признателен за любую помощь в настройке правильных путей для cmake.

ОТВЕТЫ

Ответ 1

В вашем CMakeLists.txt попробуйте добавить следующее:

Подробнее о командах:

Ответ 2

работал у меня в проблеме «Python.h: Нет такого файла или каталога»

Ответ 3

Вы хотите включить следующее в строку компиляции:

и это на линии ссылок:

Ответ 4

Скорее всего, Python.h не входит в ваш путь к системам сборки. Вы можете узнать, где находится ваш Python.h, запустив

Это также проверит, что на пакете python-dev действительно установлен Python.h.

У меня здесь нет kdevelop, но большинство IDE имеют параметр где-то, где вы можете указать путь include, используемый системой сборки, и вы должны иметь возможность добавить путь, где находится Python.h.

Как подразумевал Николай, вам также нужно будет добавить правильный путь библиотеки для этапа компоновки. (Вывод python-config -ldflags).

Ответ 5

Я предполагаю, что он уже установлен. Найдите путь с помощью:

и когда вы это сделаете, при компиляции добавьте

Ответ 6

Для Linux Ubuntu Putty пользователи попробуют это:

Источник

Читайте также:  Настройка автообновления windows 10
Оцените статью