Вопрос или проблема
Кто-нибудь знает, как исправить эту ошибку в Python 3.7? Любая более поздняя версия Python ломает стороннюю библиотеку, которую я использую, так что не просите меня использовать другую версию.
По умолчанию установка для пользователя, так как обычные site-packages недоступны для записи
Сборка pyenet
Используется кэшированный файл pyenet-1.3.17.tar.gz (13 кБ)
Подготовка метаданных (setup.py) ... готово
Сборка Cython<1,>=0 (из pyenet)
Используется кэшированный файл Cython-0.29.37-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl.metadata (3.1 кБ)
Используется кэшированный файл Cython-0.29.37-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (1.9 МБ)
Сборка пакетов для собранных: pyenet
Сборка колеса для pyenet (setup.py) ... ошибка
ошибка: subprocess-exited-with-error
× python setup.py bdist_wheel не выполнен успешно.
│ код выхода: 1
╰─> [24 строки вывода]
/usr/lib/python3/dist-packages/setuptools/__init__.py:84: _DeprecatedInstaller: setuptools.installer и fetch_build_eggs устарели.
!!
********************************************************************************
Требования должны удовлетворяться установщиком PEP 517.
Если вы используете pip, вы можете попробовать `pip install --use-pep517`.
********************************************************************************
!!
dist.fetch_build_eggs(dist.setup_requires)
выполняется bdist_wheel
выполняется сборка
выполняется build_ext
Компиляция enet.pyx, так как он изменился.
[1/1] Cythonizing enet.pyx
сборка расширения 'enet'
создание build
создание build/temp.linux-x86_64-cpython-37
x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -g -fwrapv -O2 -fPIC -DHAS_POLL -DHAS_FCNTL -DHAS_MSGHDR_FLAGS -DHAS_SOCKLEN_T -DHAS_GETHOSTBYNAME_R -DHAS_GETHOSTBYADDR_R -Ienet/include/ -I/usr/include/python3.7m -c enet.c -o build/temp.linux-x86_64-cpython-37/enet.o
enet.c:51:10: фатальная ошибка: Python.h: Нет такого файла или каталога
51 | #include "Python.h"
| ^~~~~~~~~~
компиляция завершена.
ошибка: команда '/usr/bin/x86_64-linux-gnu-gcc' завершилась с кодом выхода 1
[конец вывода]
примечание: Эта ошибка происходит из подпроцесса и, вероятно, не является проблемой pip.
ERROR: Не удалось собрать колесо для pyenet
Выполнение setup.py clean для pyenet
Не удалось собрать pyenet
ERROR: Не удалось собрать колеса для pyenet, которые необходимы для установки проектов на основе pyproject.toml
Ответ или решение
Ошибка при попытке установить пакет pyenet
через pip
связана с отсутствием необходимого файла Python.h
, который является частью заголовков (headers) Python, необходимых для компиляции расширений на C. Чтобы решить эту проблему, вам нужно установить пакет, который содержит эти заголовочные файлы.
Вот пошаговая инструкция для устранения данной ошибки:
-
Установите заголовочные файлы Python:
На системах, основанных на Debian или Ubuntu, вы можете установить нужный пакет с помощью следующей команды в терминале:sudo apt-get install python3-dev
Если у вас установлена конкретная версия Python, например 3.7, вы можете установить заголовочные файлы именно для этой версии:
sudo apt-get install python3.7-dev
-
Убедитесь, что вы используете правильную версию pip:
Убедитесь, что вы используете pip, соответствующий вашей версии Python:python3.7 -m pip install --upgrade pip
-
Попробуйте установить пакет снова:
После установки заголовочных файлов Python попробуйте снова установитьpyenet
. Используйте команду:python3.7 -m pip install pyenet
-
Используйте флаг PEP 517:
Если ошибка все еще возникает, попробуйте установить пакет с использованием PEP 517:python3.7 -m pip install --use-pep517 pyenet
-
Проверьте зависимости:
Убедитесь, что все зависимости, такие какCython
, установлены корректно:python3.7 -m pip install Cython
-
Обновите setuptools и wheel:
Иногда проблемы возникают из-за устаревших версийsetuptools
иwheel
. Вы можете обновить их с помощью:python3.7 -m pip install --upgrade setuptools wheel
Следуя этим шагам, вы должны быть в состоянии установить pyenet
без проблем. Если после выполнения всех инструкций проблема все еще сохраняется, пожалуйста, уточните, какие именно ошибки возникают, чтобы можно было предложить более детальные рекомендации.