Как скомпилировать Python в Linux пошагово

Как скомпилировать python в linux

Как скомпилировать python в linux

Сборка Python из исходного кода позволяет установить нужную версию интерпретатора без зависимости от пакетов дистрибутива. Такой способ используется для тестирования новых релизов, настройки параметров компиляции и установки нескольких версий Python на одной системе.

Перед началом требуется убедиться, что в системе присутствуют инструменты разработки: gcc, make, libssl-dev, zlib1g-dev, libffi-dev, build-essential. Эти пакеты обеспечивают корректную сборку и поддержку стандартных библиотек языка.

Исходный код Python распространяется через официальный сайт python.org в виде архива .tar.xz. После распаковки выполняется настройка с помощью скрипта ./configure, компиляция командой make и установка через make install. Такой подход даёт полный контроль над процессом, включая выбор пути установки и модулей.

Проверка установленных пакетов для сборки Python

Проверка установленных пакетов для сборки Python

Перед компиляцией Python в Linux важно убедиться, что в системе присутствуют все зависимости, необходимые для сборки исходного кода. Без них процесс может завершиться с ошибками или собрать интерпретатор с урезанными возможностями.

Откройте терминал и выполните команду для обновления списка пакетов:

sudo apt update

Далее проверьте наличие инструментов для сборки и библиотек, которые требуются Python:

sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget curl libbz2-dev tk-dev -y

Пакет build-essential устанавливает компилятор GCC, make и базовые утилиты. Остальные библиотеки обеспечивают поддержку архивов, сетевых протоколов, работы с базами данных и графических интерфейсов.

Чтобы проверить, установлены ли эти пакеты, используйте команду:

dpkg -l | grep -E "build-essential|zlib1g-dev|libncurses5-dev|libssl-dev|libffi-dev|libsqlite3-dev|tk-dev"

Если какой-либо из пакетов отсутствует, установите его отдельно с помощью sudo apt install имя_пакета.

На дистрибутивах на базе RHEL (например, CentOS или Fedora) вместо apt используется dnf:

sudo dnf install gcc openssl-devel bzip2-devel libffi-devel zlib-devel ncurses-devel readline-devel sqlite-devel tk-devel -y

После проверки можно переходить к загрузке исходников и сборке Python, уверенно зная, что система полностью готова к компиляции.

Загрузка исходного кода Python с официального сайта

Загрузка исходного кода Python с официального сайта

Исходные коды Python распространяются через официальный сайт проекта – python.org. Загружать архивы следует только оттуда, чтобы избежать подмены файлов или устаревших версий.

Определите нужную версию. Например, для сборки Python 3.12.6 выполните в терминале:

wget https://www.python.org/ftp/python/3.12.6/Python-3.12.6.tgz

После завершения загрузки проверьте целостность архива. На странице загрузки указан SHA256-хеш. Для сверки используйте команду:

sha256sum Python-3.12.6.tgz

Сравните результат с контрольной суммой, опубликованной на сайте. Несовпадение означает повреждение файла – его необходимо скачать заново.

Распакуйте архив командой:

tar -xvf Python-3.12.6.tgz

После распаковки появится каталог Python-3.12.6, содержащий исходные файлы и конфигурационные скрипты. Перейдите в него для подготовки к сборке:

cd Python-3.12.6

Рекомендуется сохранять исходники в отдельной директории, например /usr/src/, чтобы структура системы оставалась упорядоченной.

Распаковка архива и переход в каталог исходников

После загрузки архива с исходным кодом Python необходимо его распаковать. Если файл имеет расширение .tgz или .tar.xz, используйте стандартную утилиту tar:

tar -xvf Python-3.12.6.tgz

Команда создаст каталог с именем Python-3.12.6. Проверить наличие распакованных файлов можно через:

ls Python-3.12.6

Внутри каталога находятся скрипт configure, подкаталоги Modules, Objects, Include и другие компоненты, необходимые для сборки.

Чтобы начать настройку сборки, перейдите в созданный каталог:

cd Python-3.12.6

Для удобства рекомендуется выполнять все действия из директории, где хранятся исходники, например /usr/src/ или /opt/src/. Это помогает поддерживать порядок и облегчает обновление в будущем.

Настройка параметров сборки с помощью ./configure

Настройка параметров сборки с помощью ./configure

Перед компиляцией необходимо задать параметры сборки с помощью скрипта configure. Этот этап определяет, какие модули и опции будут включены в итоговую сборку.

Находясь в каталоге исходников Python, выполните команду:

./configure --enable-optimizations --with-ensurepip=install

Параметр —enable-optimizations активирует дополнительные проверки и оптимизацию кода, повышающую производительность интерпретатора. Опция —with-ensurepip=install добавляет установку pip сразу при сборке.

Если планируется установка Python в определённый каталог, используйте флаг —prefix. Например:

./configure --enable-optimizations --with-ensurepip=install --prefix=/usr/local/python3.12

Чтобы включить поддержку дополнительных библиотек, можно указать пути к ним через переменные окружения. Пример:

CPPFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" ./configure

Запуск процесса компиляции через make

Запуск процесса компиляции через make

После настройки сборки с помощью ./configure переходят к компиляции исходного кода с помощью команды make. Этот процесс преобразует исходники Python в исполняемые файлы.

Основная команда для компиляции:

make -j $(nproc)

Опция -j $(nproc) позволяет использовать все доступные ядра процессора, ускоряя сборку.

Рекомендации по компиляции:

  • Для полной сборки с оптимизациями используйте ту же опцию, что и в ./configure, например —enable-optimizations.
  • При необходимости остановить процесс используйте Ctrl+C и устраните ошибки перед повторным запуском.
  • После успешного завершения процесса появятся бинарные файлы: python3, pip и вспомогательные утилиты.

Если требуется проверить корректность сборки до установки, выполните:

make test

Эта команда запустит встроенные тесты Python и покажет успешность компиляции ключевых модулей и функций.

Установка скомпилированного Python в систему

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

Для установки используйте команду:

sudo make altinstall

Рекомендация использовать altinstall вместо install предотвращает замену системного Python и связанных с ним утилит.

По умолчанию бинарные файлы устанавливаются в /usr/local/bin/, а библиотеки – в /usr/local/lib/pythonX.Y/. Проверить установленные пути можно с помощью команды:

which python3.12

Для наглядности, пути установки и соответствующие файлы представлены в таблице:

Компонент Директория
Исполняемый файл Python /usr/local/bin/python3.12
PIP /usr/local/bin/pip3.12
Стандартные библиотеки /usr/local/lib/python3.12/
Дополнительные модули /usr/local/lib/python3.12/site-packages/

После установки убедитесь в корректности версии командой:

python3.12 --version

При необходимости добавьте путь к новым бинарным файлам в PATH для удобного вызова Python и pip из терминала.

Проверка версии установленного интерпретатора

Проверка версии установленного интерпретатора

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

Для проверки версии выполните команду:

python3.12 --version

Проверка доступности утилиты pip проводится аналогично:

pip3.12 --version

Если требуется убедиться, что вызов python3 указывает на установленный интерпретатор, выполните:

  • which python3 – покажет путь к исполняемому файлу.
  • ls -l $(which python3) – проверка символических ссылок.

Для тестирования работы интерпретатора можно запустить интерактивный режим:

python3.12

В интерактивной консоли выполните простую команду:

print("Python установлен корректно")

Удаление временных файлов после сборки

Удаление временных файлов после сборки

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

Основная команда для очистки:

make clean

Она удаляет объектные файлы и временные каталоги, оставляя исходные файлы нетронутыми. Для полной очистки используется:

make distclean

Эта команда восстанавливает каталог исходников в исходное состояние, включая удаление сгенерированных файлов конфигурации.

Пример организации удаления и оставшихся компонентов представлен в таблице:

Команда Удаляемые файлы Сохраняемые файлы
make clean *.o, *.so, временные каталоги сборки Исходные файлы, configure, README, LICENSE
make distclean Все файлы сборки, Makefile, config.h Исходники, документация, архивы

После очистки каталог исходников остается готовым к повторной сборке или архивированию для хранения.

Вопрос-ответ:

Какие пакеты необходимо установить перед компиляцией Python в Linux?

Для успешной сборки Python требуется набор библиотек и инструментов. На системах на базе Debian/Ubuntu нужно установить build-essential для компилятора и make, zlib1g-dev, libncurses5-dev, libgdbm-dev, libnss3-dev, libssl-dev, libreadline-dev, libffi-dev, libsqlite3-dev, libbz2-dev и tk-dev. На RHEL/Fedora используются gcc, openssl-devel, bzip2-devel, libffi-devel, zlib-devel, ncurses-devel, readline-devel, sqlite-devel и tk-devel. Эти пакеты обеспечивают поддержку сжатия, шифрования, работы с базами данных, консольного ввода и графических модулей.

Как загрузить исходный код Python с официального сайта?

Исходники Python доступны на python.org. Для загрузки конкретной версии используйте wget, например: wget https://www.python.org/ftp/python/3.12.6/Python-3.12.6.tgz. После скачивания рекомендуется проверить контрольную сумму SHA256 командой sha256sum Python-3.12.6.tgz и сравнить с суммой на сайте. Архив распаковывается через tar -xvf Python-3.12.6.tgz, после чего можно перейти в каталог исходников cd Python-3.12.6.

Как правильно настроить параметры сборки с помощью ./configure?

В каталоге исходников выполните ./configure с нужными опциями. Для оптимизации производительности добавляется --enable-optimizations, а для установки pip — --with-ensurepip=install. Если Python требуется установить в отдельную директорию, используется --prefix=/путь/к/каталогу. Дополнительно можно указать пути к сторонним библиотекам через переменные окружения CPPFLAGS и LDFLAGS. После выполнения скрипта создается Makefile с фиксированными параметрами сборки.

Каким образом запустить компиляцию Python и проверить её корректность?

Для компиляции используйте команду make -j $(nproc), которая задействует все доступные ядра процессора. В процессе сборки следите за сообщениями об ошибках. После завершения можно запустить make test, чтобы проверить работу ключевых модулей Python. Ошибки указывают на отсутствие библиотек или несовместимости, которые нужно устранить до установки.

Как установить скомпилированный Python без замены системного интерпретатора?

Для установки используйте sudo make altinstall. Этот способ добавляет новую версию Python, не затрагивая системную. По умолчанию бинарные файлы размещаются в /usr/local/bin/, стандартные библиотеки — в /usr/local/lib/pythonX.Y/. Проверка установки проводится командой python3.12 --version и pip3.12 --version. При необходимости путь к новым бинарным файлам добавляется в PATH.

Как проверить, что все необходимые пакеты для сборки Python установлены?

Для проверки установленных библиотек и инструментов на системах на базе Debian/Ubuntu используйте команду: dpkg -l | grep -E "build-essential|zlib1g-dev|libncurses5-dev|libssl-dev|libffi-dev|libsqlite3-dev|tk-dev". На RHEL/Fedora аналогично проверяются пакеты через rpm -qa | grep "gcc|openssl-devel|bzip2-devel|libffi-devel|zlib-devel|ncurses-devel|readline-devel|sqlite-devel|tk-devel". Если какой-либо пакет отсутствует, установите его через apt install или dnf install. Это гарантирует корректную работу сборки и подключение всех необходимых модулей.

Что делать, если после компиляции Python при вызове python3.12 выводит неверную версию?

Необходимо проверить, какой бинарный файл используется системой через команду which python3.12. Возможно, путь не совпадает с установленным компилированным Python. Если требуется, добавьте путь к исполняемому файлу в переменную PATH, например: export PATH=/usr/local/bin:$PATH. После этого повторно проверьте версию командой python3.12 --version. Также убедитесь, что предыдущие системные версии не создают конфликт через символические ссылки.

Ссылка на основную публикацию