Как собрать python из исходников
Перейти к содержимому

Как собрать python из исходников

  • автор:

Собрать python из исходников?

Хотел обновить python 3.8 до 3.8.18 с багфиксами. На офф-сайте только исходники, в build-readme предлагают установить VisualStudio. Хотелось бы обойтись одним mingw, или это невозможно? Опыта компиляции «C» нету.

Отслеживать
задан 12 окт 2023 в 9:23
11 2 2 бронзовых знака
12 окт 2023 в 9:50

построенный в mingw не имел бы доступа к ряду API. Майкрософтский компилятор (оболочка не обязательна) — к сожалению, единственно средство сборки приложений использующих API WIndows напрямую.

12 окт 2023 в 10:34

Надо еще посмотреть, не предлагает ли новая студия уже собранный 3.8.18. python ставится как доп-компонент, судия его поддерживает.

Сборка и установка Python 3.x из исходников (Ubuntu, Debian)

Для основного интерпретатора CPython требуется только компилятор языка C, НО для некоторых модулей стандартной библиотеки Python (например, модуль сжатия zlib или модуль базы данных sqlite3 ) потребуются установить дополнительные системные библиотеки.

Установка основных зависимостей для сборки Python3:

Примечание: команда установки sudo apt install . записана в 3 строки, что бы уместить библиотеки на экране без горизонтальной прокрутки.Обратите внимание, что это только основные зависимости, для успешной сборки Python

$ sudo apt update -y $ sudo apt install -y build-essential zlib1g-dev libffi-dev libsqlite3-dev libncurses5-dev $ sudo apt install -y libncursesw5-dev libreadline6-dev libdb5.3-dev $ sudo apt install -y libgdbm-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev tk-dev
Установка всех зависимостей для полной сборки и установки Python3:

Применительно к Debian, Ubuntu и других систем на базе установщика apt .

Во-первых, убедитесь, что в списке источников sources.list включены пакеты с исходными кодами. Это можно сделать, добавив строку с расположением scr пакетов, включая URL-адрес, имя дистрибутива и имя компонента в файл /etc/apt/sources.list .

# на примере дистрибутива Ubuntu 20.4 (Focal) deb-src http://archive.ubuntu.com/ubuntu/ focal main # на примере дистрибутива Debian 10 (Buster) deb-src http://deb.debian.org/debian/ buster main

Затем вы должны обновить индекс пакетов и установить зависимости сборки через команду apt :

$ sudo apt-get update $ sudo apt-get build-dep python3.10

Если этот пакет недоступен в вашей системе, то попробуйте уменьшить версию до тех пор, пока не найдете доступный пакет. Например:

$ sudo apt-get build-dep python3.9

Внимание! Если пакет для сборки, например Python3.10 недоступен в вашем дистрибутиве (а доступен только например Python3.8), то это не значит что версию Python3.10 нельзя установить в такую систему. Просто некоторые модули стандартной библиотеки Python используют системную библиотеку версией выше и ее нет в вашем дистрибутиве. В итоге модуль использующий библиотеку, которой нет, просто не скомпилируется и не будет работать в итоговой сборке.

И так, имеем скачанный Python нужной версии, допустим это будет версия 3.x.x (x — цифры нужной версии ), в формате GZIP и с расширением .tgz . Распакуем архив с исходниками Python-3.x.x.tgz, при этом создастся папка Python-3.x.x, в которую затем перейдем.

# Распаковываем $ tar xvf Python-3.x.x.tgz # Переходим в папку $ cd Python-3.x.x

Теперь нужно сконфигурировать установку командой ./configure . Определимся, куда мы будем ставить нужный нам Python и укажем этот директорий в конфигурации. Обычно не системные приложения в Linux ставятся в папку /opt , следовательно, будем ставить в директорию /opt/Python-3.x.x/ , где .x.x — обозначают версию Python.

# компилируется быстро $ ./configure --prefix=/opt/python-3.x.x/ # компилируется медленно, но потом работает быстрее $ ./configure --prefix=/opt/python-3.x.x/ --enable-optimizations
  • Включение флага —enable-optimizations позволяет оптимизировать профилирование PGO — оптимизация профиля [лучшая подготовка, поддержка llvm и т.д.] и оптимизацию LTO — времени связи для GCC и CLANG. Оба являются дорогостоящими оптимизациями, которые замедляют процесс сборки, но дают значительное повышение скорости примерно на 10-20%.
  • Включение флага —with-lto использует возможность последних наборов инструментов компилятора для оптимизации через произвольную границу файла .o при создании окончательных исполняемых файлов или общих библиотек для дополнительного повышения производительности.
  • Для поддержки часового пояса по умолчанию, начиная с версии Python 3.9, при компиляции можно указать флаг —with-tzpath , который должен быть строкой, разделенной os.pathsep и указывать на данные о часовых поясах в системе.
  • Все флаги конфигурации можно посмотреть командой ./configure -help .

Далее скомпилируем Python и установим в директорию, указанную в конфигурации:

# компиляция, займет продолжительное время $ make -j4 # установка $ sudo make altinstall

Команда make -c -j4 создаст CPython с выводом только предупреждений и ошибок в stderr и будет использовать до 2-x ядер ЦП. Если вы используете машину с более чем четырьмя ядрами или одноядерную машину, то измените число, переданное в флаг -j, в соответствии с количеством ядер, которые у вас есть

После удачной установки, для удобного вызова Python, добавим aliases для текущей сессии терминала:

# Для интерпретатора $ alias py3.x.x=”/opt/python-3.x.x/bin/python″ # Для системы управления пакетами pip $ alias pip3.x.x=”/opt/python-3.x.x/bin/pip″ # Теперь, чтобы вызвать установленный Python, вводим команду $ py3.x.x # Чтобы вызвать pip установленного Python $ pip3.x.x

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

# Пока так НЕ делайте. $ echo 'alias py3.x.x=”/opt/python-3.x.x/bin/python″' >> ~/.bashrc $ echo 'alias pip3.x.x=”/opt/python-3.x.x/bin/pip″' >> ~/.bashrc # Теперь сторонние пакеты будем ставить так $ sudo pip3.x.x install numpy matplotlib pandas

И все же, при установке сторонних модулей и пакетов, мы все еще пользуемся привилегиями суперпользователя sudo , а это в системах Linux не приветствуется.

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

  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Выбираем разрядность Python3 для Windows
  • Установка Python3 на ОС Windows
  • Установка Python3 на Ubuntu (Debian) из репозиториев
  • Выбираем разрядность Python3 для Linux
  • Установка Python 3.x из исходников на ОС Linux
  • Запуск и использование интерпретатора Python
  • Установка и использование PyPy3, совместимость с Python3
  • Когда следует переходить на новую версию Python

Как установить Python на Linux

В последнее время, среди нового поколения разработчиков программного обеспечения большую популярность набирает язык программирования Python (Питон). На примере Python, мы видим высокоуровневый язык, который не нуждается в компиляторе и применяется для написания самого разного вида софта (мобильные приложения, веб-разработка, СПО под Линукс, системы искусственного интеллекта и machine learning, Data Science и др.). Надо отметить, что профессия программиста на Python сейчас достаточно популярна и востребована среди молодежи, ей обучают на многочисленных курсах, да и предложения по зарплате очень даже неплохие.

Так как программы, разработанные на Python, не компилируются, то роль интерпретатора байт-кода играет CPython. Исходный код программ, написанных на питоне, хранится в файлах с расширением .py.

В ОС Linux язык Python играет важную роль, он используется для системного администрирования, и именно на нем написаны такие известные программы, как GIMP, Blender и др. В Линукс интерпретатор питон уже установлен «по умолчанию», но как правило, разработчику необходима или наиболее свежая версия или же несколько версий Python сразу. На сегодня, последняя стабильная версия языка Python — это 3.9.2, скачать ее можно на официальном сайте проекта.

В этой статье мы расскажем все тонкости установки Python для Linux, на примере Ubuntu 20, Debian 10, а также CentOS 7/8.

Подготовка к установке Python под Ubuntu 20 (Debian 10)

Как мы уже писали ранее, Python должен быть установлен «по умолчанию» в стандартном пакете сборки Ubuntu 20.04. Перед выполнением инсталляционных работ, наша задача — проверить какая версия питон у нас уже установлена в системе. Сделать это можно с помощью следующей команды:

python3 --version

Версия Python в ОС Ubuntu 20

В нашей ОС Ubuntu 20 уже есть версия Python 3.8.5. Существует еще одна полезная команда, с помощью которой можно узнать, какие вообще версии Python установлены в нашей ОС Линукс, см. ниже на скриншоте:

ls -l /usr/bin/python*

Все версии Python, установленные в Ubuntu 20 по умолчанию.

Сейчас мы покажем, как установить Python на Ubuntu двумя популярными способами:

  1. с помощью apt (используя deadsnakes PPA);
  2. из исходников, скачанных с официального сайта.

Все команды следует выполнять или под пользователем root, или используя sudo.

Установка новой версии Python из deadsnakes PPA

Первоначально, введем команды для обновления списка пакетов и установки необходимых нам для дальнейшей работы библиотек:

sudo apt update sudo apt install software-properties-common

Установка необходимых нам для дальнейшей работы библиотек

Затем необходимо включить deadsnakes PPA (Personal Package Archive), для этого выполним следующую команду:

sudo add-apt-repository ppa:deadsnakes/ppa

Включение deadsnakes PPA

После этого действия, еще раз выполним команду:

sudo apt update

Сейчас установим версию Python 3.9:

sudo apt install python3.9

Установка Python 3.9

На следующем этапе, мы опять проверим список установленных в системе версий Python и видим, что добавилась версия 3.9:

ls -l /usr/bin/python*

Все версии Python (включая 3.9), установленные в Ubuntu 20.

Сборка Python 3.9.2 в Linux из исходников

Этот способ может показаться немного сложнее предыдущего, но зато с помощью него можно установить самую свежую версию Python, которая доступна на официальном сайте. Процесс установки опробован на ОС Ubuntu 20, также его можно применять и на Debian 10.

Зайдем на FTP сервер официального сайта проекта Python (https://www.python.org/ftp/python) и выберем там архив с последней стабильной версией питон:

FTP сервер официального сайта проекта Python

Перед началом процесса работ по установке выполним команды для обновления системы:

sudo apt update

На следующем шаге, необходимо инсталлировать необходимые нам для работы пакеты:

sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget

Инсталляция необходимых для сборки Python пакетов

Затем перейдем в папку /tmp и скачаем в нее архив с официального сайта Python*:

cd /tmp/ wget https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz

*Примечание: можно использовать как команду wget, так и команду curl.

Скачиваем архив с официального сайта Python командой wget

Cейчас распакуем этот архив во временную папку и затем его сразу же и удалим:

tar -xf Python-3.9.2.tgz rm Python-Python-3.9.2.tgz

На следующем этапе, запустим команду, которая выполнит подготовку к установке (enable-optimization — служит для оптимизации двоичного файла Python). Исполнение данной команды займет некоторое время:

cd Python-3.9.2 ./configure --enable-optimizations

Подготовка к установке Python 3.9.2

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

make -j 2

*Примечание: цифра 2 указывает на количество ядер процессора. Узнать эти данные можно с помощью команды nproc.

Выполнение команды make -j

Если в процессе сборки будут замечены проблемы, то необходимо запустить сборку в однопоточном режиме, следующим образом (без параметров -j 2), просто выполнив команду make.

Теперь установим Python 3.9.2 с помощью команды altinstall, последняя версия Python инсталлируется наряду со старыми версиями, т.е. у вас в ОС будет несколько версий языка Python. Если же вы используете команду install, то новая версия питон будет установлена поверх старых (а все старые версии будут удалены).

sudo make altinstall

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

В результате, в нашей ОС Ubuntu 20 (Debian 10) будет установлено сразу несколько версий языка Python, у нас конкретно — это версии 3.9.2 и 3.8.5, проверить можно с помощью команд:

python3.9 --version python3.8 --version

Установлено несколько версий Python в ОС Линукс

Особенности установки Python на CentOS

Для инсталляции Python на CentOS версии 7 необходимо использовать репозиторий epel (Extra Packages for Enterprise Linux) или же DNF (Dandified YUM, т.е. yum нового поколения) для CentOS 8.

Для способа с использованием DNF выполним следующие команды:

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

sudo dnf update -y
sudo dnf install python3 -y
python3 -v
sudo dnf -y groupinstall development

Если же вы будете использовать репозиторий epel, то следуйте простым инструкциям:

    Подключите репозиторий epel для начала работы:

yum install epel-release
yum install python36
python -v
python36 -v

Как создать и настроить виртуальную среду

Для чего нужна виртуальная среда? С помощью виртуальной среды мы можем для каждого своего проекта на языке Python выделить отдельную область (со своими зависимостями, с установленными модулями питон, разными версиями языка и т.д.).

Работа с пакетом virtualenv

Например, у нас есть Project A и Project B, для каждого из них мы можем создать свою виртуальную среду, сделать это можно с помощью venv, выполнив несложные команды:

    Создаем каталог для нового проекта my_project и переходим в него:

mkdir ~/my_project && cd ~/my_project
python3.9 -m venv my_project_venv
source my_project_venv/bin/activate

Создание виртуальной среды

На скриншоте ниже показано, что далее работа с проектом ведется уже внутри виртуальной среды:
Для выхода из виртуальной среды воспользуйтесь командой:

deactivate

Работа с виртуальной средой с помощью virtualenvwrapper и pip

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

sudo -i
  1. Для начала устанавливаем менеджер пакетов pip:
apt install python3-pip -y

Устанавливаем менеджер пакетов pip

Осуществим установку virtualenv и virtualenvwrapper:

pip3 install virtualenv virtualenvwrapper

Установка virtualenv и virtualenvwrapper

Затем необходимо отредактировать файл .bashrc (в директории пользователя root, если работаете под root или же в директории другого пользователя):

nano /root/.bashrc
nano /home/USER/.bashrc

Добавим в конец файла следующие строки:

export WORKON_HOME=$HOME/.python-env source /usr/local/bin/virtualenvwrapper.sh
source .bashrc
mkvirtualenv ansible

Б) Для удаления виртуальной среды:

rmvirtualenv ansible

В) Чтобы активировать нужную вам виртуальную среду:

workon ansible

Г) Для выхода из среды:

deactivate

Д) Показать список установленных пакетов:

pip3 list

Выполнение команды pip3 list

Е) Для инсталляции конкретных пакетов:

pip3 install ansible example

Заключение

В этой статье мы рассказали нашим читателям об использовании языка программирования Python и подробно изложили два способа установки последней версии Python для ОС Linux (на Ubuntu 20, Debian 10, CentOS 7 и 8). Также дали основные понятия о работе с виртуальной средой.

Надеемся, что данный материал будет интересен, как начинающим программистам на Python, так и более опытным специалистам, которые планируют расширить свои познания в области программирования и настройки ОС. Специалисты компании FREEhost.UA всегда помогут вам с инсталляцией и настройкой различных программных решений для VPS.

Как собрать python из исходников

CentOS 7 — стабильная операционная система, основанная на RedHat Enterprise Linux. Эти системы работают по принципу «если работает — не трогай». Поэтому они поставляются с довольно старыми, но зато проверенными версиями пакетов. Во многих случаях этот подход себя оправдывает, но иногда хочется видеть на своём сервере пакеты более свежих версий. Это касается, например, Python 3. Его вообще нет официальных репозиториях (есть только версии 2.7). А 3-й пайтон нужен для фреймворка Django. Поэтому приходится прилагать некоторые усилия, чтобы поставить на сервер Python самой последней версии.

Ставить будем из исходников. Потому что таким образом мы получим самую последнюю версию Python. На момент написания статьи — это 3.9.0. Для сборки пакета нам нужно подготовиться и установить дополнительные инструменты:

sudo yum install gcc make openssl-devel bzip2-devel libffi-devel wget sqlite-devel zlib-devel ncurses-devel gdbm-devel readline-devel

Загружаем исходные коды, распаковываем и переходим в соответствующую директорию

tar xzvf Python-3.9.0.tgz && cd Python-3.9.0

Если раньше мы не собирали другие версии Python и у нас установлена только 2.7 версия, то можно устанавливать так

sudo make install

Каталогом по умолчанию будет /usr/local/. Проверяем наличие нового Python:

Если будет выведено, что команда не найдена, дописываем в конец PATH путь /usr/local. И проверяем версию нового установленного Python

Должно быть выведено

Пайтон последней версии установлен в системе!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *