Установка Python на Linux
В этой заметке я покажу как собрать из исходников и установить Python на Linux. Я буду все действия производить на Ubuntu 20.04, но инструкция будет одинаково работать и на LinuxMint и Debian.
В моей Ubuntu по умолчанию установлен Python 3.8.10, я хочу установить более свежую версию, как же это сделать?
Подготовка
Обновляем список пакетов
sudo apt update
Устанавливаем все необходимое для сборки Питона из исходников
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev
Дальше на странице https://www.python.org/downloads/source/ нужно сохранить ссылку на исходники нужной вам версии Python, например я возьму последнюю на данный момент версию Python 3.10.1

С помощью wget скачиваем исходники в домашнюю директорию
sudo wget https://www.python.org/ftp/python/3.10.1/Python-3.10.1.tgz
Далее разархивируем скаченный архив:
sudo tar -xf Python-3.10.1.tgz

Сборка Python в Linux из исходников
Перейдем в директорию с исходным кодом Python
Далее нужно запустить скрипт конфигурации, он выполнит проверки на необходимые для сборки Python
Мы запускаем скрипт с параметром —enable-optimizations, он оптимизирует собираемый двоичный файл Python (правда это замедлит процесс сборки, https://docs.python.org/3/using/configure.html).
После выполнения скрипта нам остается запустить сам процесс сборки:
Параметром -j 4 я указал количество ядер процессора, узнать эту цифру можно командой nproc .
Установка Python в Linux
Процесс сборки довольно длительная операция, после того, как она завершиться можно установить Python одной из двух команд:
sudo make altinstall
Эта команда устанавливает наш Python рядом с предыдущими версиями, в будущем вы сможете выбирать какой версией пользоваться.
sudo make install
Эта команда установит новую версию Python поверх старых.
В данный момент я воспользовался первой командой altinstall .
Дожидаемся окончания процесса установки и проверяем:
В ответ получаем версию Python 3.10.1
Предыдущая версия python, установленная в Убунту 20.04 по умолчанию так же доступна, можно убедится в этом вызвав команду:
В ответ получаем версию Python 3.8.10
Теперь можно удалить архив с исходниками и папку куда мы их разархивировали:
sudo rm -Rf Python-3.10.1 Python-3.10.1.tgz
Еще раз повторюсь, что инструкция выше по сборке Python из исходников в Ubuntu подойдет и для установки Python в LinuxMint и Debian. В репозиториях этих дистрибутивов уже есть собранные Python, но не всегда самой свежей версии.
Категории
Свежие записи
- Импорт/экспорт Linux WSL
- Не печатаются заглавные буквы в PowerShell
- 1С-Битрикс: Ошибка авторизации! Срок действия пароля истек, необходимо сменить пароль.
- Несколько конфигураций для проекта Django
- Django inclusion_tag с разными шаблонами
- Декоратор @property в моделях Django
Сборка и установка 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 из исходников
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
Должно быть выведено
Пайтон последней версии установлен в системе!
Собрать python из исходников?
Хотел обновить python 3.8 до 3.8.18 с багфиксами. На офф-сайте только исходники, в build-readme предлагают установить VisualStudio. Хотелось бы обойтись одним mingw, или это невозможно? Опыта компиляции «C» нету.
Отслеживать
задан 12 окт в 9:23
11 2 2 бронзовых знака
12 окт в 9:50
построенный в mingw не имел бы доступа к ряду API. Майкрософтский компилятор (оболочка не обязательна) — к сожалению, единственно средство сборки приложений использующих API WIndows напрямую.
12 окт в 10:34
Надо еще посмотреть, не предлагает ли новая студия уже собранный 3.8.18. python ставится как доп-компонент, судия его поддерживает.
12 окт в 10:37
0
Сортировка: Сброс на вариант по умолчанию
Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.
- python
- c++
- c
- mingw
- build
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.