Python 3.13: полное руководство по настройке в Linux

Раздел: Установка и настройка -> Установка

Как установить Python 3.13 с возможностью переключения версий?

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

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

Пошаговая инструкция:

  1. Установка зависимостей pyenv (на Ubuntu/Debian):
    sudo apt update
    sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

    Python install failed (ошибка установки python)

  2. Установка самого pyenv:
    curl https://pyenv.run | bash

    Python скачать для windows (скачать python для windows)

    После завершения скрипт предложит добавить строки в ~/.bashrc (или ~/.zshrc). Выполняется команда:

    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
    echo 'eval "$(pyenv init -)"' >> ~/.bashrc
    exec $SHELL

    Python dll load (загрузка python dll)

  3. Установка Python 3.13 через pyenv:
    pyenv install 3.13.0

    Ubuntu python install (установка python на ubuntu)

    Команда скачивает исходный код и компилирует его (занимает 5–15 минут). Результат:

    Downloading Python-3.13.0.tar.xz...
    Installing Python-3.13.0...
    Installed Python-3.13.0 to /home/user/.pyenv/versions/3.13.0

    Find python 3 (поиск python 3)

  4. Проверка установленных версий и глобальная настройка:
    pyenv versions
    pyenv global 3.13.0
    python --version

    Https python downloads windows (скачать python для windows (python.org))

    * system (set by /home/user/.pyenv/version)
      3.13.0
    
    Python 3.13.0

    установить python cmd (установка python через cmd)

  5. Создание виртуального окружения (необязательно):
    pyenv virtualenv 3.13.0 myproject
    pyenv activate myproject

    Python 3.13 linux (python 3.13 на linux)

Возможные проблемы:

  • Ошибка компиляции: configure: error: no acceptable C compiler found in $PATH - не установлен компилятор. Решение: установить build-essential.
  • Ошибка SSL: ModuleNotFoundError: No module named '_ssl' - отсутствует libssl-dev. Установить пакет libssl-dev и повторить установку Python через pyenv.
  • pyenv не найден после перезагрузки: проверить строки в ~/.bashrc и выполнить source ~/.bashrc.

Как установить Python 3.13 из официального PPA (Ubuntu/Debian)?

Цель: быстрая установка через менеджер пакетов без компиляции. Подходит для пользователей Ubuntu/Debian, которым не требуется переключение между версиями.

Инструкция:

  1. Добавление PPA deadsnakes (часто содержит последние версии Python):
    sudo add-apt-repository ppa:deadsnakes/ppa
    sudo apt update

    Python portable linux (переносимая версия python для linux)

  2. Установка Python 3.13:
    sudo apt install python3.13 python3.13-venv python3.13-dev
  3. Проверка:
    python3.13 --version
    Python 3.13.0
  4. Создание виртуального окружения:
    python3.13 -m venv myenv
    source myenv/bin/activate

Возможные проблемы:

  • Пакет не найден: PPA может не содержать версию 3.13 сразу после релиза. Решение: использовать тестовую версию PPA (например, ppa:deadsnakes/nightly) или временно отредактировать sources.list.
  • Конфликт с системным Python: не рекомендуется заменять системный Python (/usr/bin/python3) на 3.13. Используйте явный вызов python3.13 или виртуальное окружение.

Как скомпилировать Python 3.13 из исходного кода?

Цель: полный контроль над параметрами сборки (оптимизации, пути установки). Подходит для серверов и встраиваемых систем, где важна производительность.

Инструкция:

  1. Установка зависимостей (Ubuntu):
    sudo apt install build-essential libssl-dev zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev liblzma-dev
  2. Скачивание исходного кода Python 3.13:
    wget https://www.python.org/ftp/python/3.13.0/Python-3.13.0.tar.xz
    tar -xf Python-3.13.0.tar.xz
    cd Python-3.13.0
  3. Конфигурация с оптимизациями:
    ./configure --enable-optimizations --enable-shared --prefix=/opt/python3.13

    Флаг --enable-optimizations включает профилирование и компиляцию с дополнительной оптимизацией (занимает больше времени). --prefix указывает каталог установки.

  4. Сборка и установка:
    make -j$(nproc)
    sudo make install
  5. Добавление в PATH:
    echo 'export PATH="/opt/python3.13/bin:$PATH"' >> ~/.bashrc
    source ~/.bashrc
    python3 --version
    Python 3.13.0
  6. Настройка динамических библиотек (если используется --enable-shared):
    sudo ldconfig /opt/python3.13/lib

Возможные проблемы:

  • Ошибка make: command not found: установить пакет build-essential.
  • Ошибка Could not find the SSL library: установить libssl-dev и перезапустить ./configure.
  • Python не запускается после установки в нестандартный путь: проверить переменные LD_LIBRARY_PATH или выполнить sudo ldconfig.

Как установить Python 3.13 через Miniconda?

Цель: управление окружениями для научных вычислений и Data Science. Conda предоставляет не только Python, но и популярные библиотеки (NumPy, Pandas) в предварительно собранном виде.

Инструкция:

  1. Скачивание и установка Miniconda:
    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
    bash Miniconda3-latest-Linux-x86_64.sh

    Следовать интерактивному установщику, согласиться на добавление в PATH.

  2. Создание окружения с Python 3.13 (через conda-forge, так как основной канал может не содержать новую версию):
    conda create -n py313 python=3.13 -c conda-forge
    conda activate py313
    python --version
    Python 3.13.0

Возможные проблемы:

  • Не удаётся найти версию 3.13: выполнить обновление conda (conda update conda) и обязательно использовать канал conda-forge.
  • Ошибка конфликта пакетов: в новом окружении устанавливать зависимости постепенно.

Как установить Python 3.13 с помощью Snap?

Цель: изолированная установка для быстрого тестирования без изменения системы. Snap-пакет от Canonical (только для дистрибутивов с поддержкой snap).

Инструкция:

  1. Установка snapd (если не установлен):
    sudo apt install snapd
    sudo systemctl enable --now snapd.socket
  2. Установка Python 3.13 из edge-канала (стабильная версия может отсутствовать):
    sudo snap install python3.13 --edge --classic

    Флаг --classic даёт доступ к файловой системе.

  3. Запуск Python 3.13:
    python3.13 --version
    Python 3.13.0
  4. Установка pip и виртуального окружения:
    python3.13 -m ensurepip --upgrade
    python3.13 -m venv myenv
    source myenv/bin/activate

Возможные проблемы:

  • Snap не найден: дистрибутив может не поддерживать snap (например, Fedora по умолчанию). Альтернативы: использовать snap install core или перейти к другим методам.
  • Ограниченный доступ к системным библиотекам: snap-пакет изолирован. Для работы с некоторыми модулями (например, curses) могут потребоваться дополнительные шаги.

Расширенные примеры использования

Ниже приведены продвинутые сценарии, которые помогут максимально эффективно использовать Python 3.13 на Linux.

Автоматизация установки Python 3.13 через pyenv в скрипте

Скрипт устанавливает все зависимости, pyenv и Python 3.13 без интерактивного вмешательства:

Пример
#!/bin/bash
# Установка зависимостей
sudo apt update && sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
    libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

# Установка pyenv (без запроса на добавление в .bashrc)
export PYENV_ROOT="/usr/local/pyenv"
curl -fsSL https://pyenv.run | bash

# Добавление в окружение для текущего скрипта
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

# Установка Python 3.13
pyenv install 3.13.0
pyenv global 3.13.0

# Проверка
echo "Python установлен:"
python3 --version

Результат выполнения (если скрипт запускается с правами root):

Python 3.13.0

Сборка Python 3.13 с профилированием и отладочными символами

Конфигурация с опциями --with-pydebug и --with-valgrind для отладки расширений C:

Пример
cd Python-3.13.0
./configure --with-pydebug --with-valgrind --prefix=/opt/python313-debug
make -j$(nproc)
sudo make install

Проверка работы под Valgrind:

Пример
/opt/python313-debug/bin/python3.13 -c "print('Hello from debug Python')"
valgrind /opt/python313-debug/bin/python3.13 -c "x = 1"

Результат (без ошибок Valgrind):

==12345== Memcheck, a memory error detector
==12345== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==12345== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info
==12345== Command: /opt/python313-debug/bin/python3.13 -c x = 1
==12345== 

Использование pyenv с автоматическим переключением версии через .python-version

Создание файла .python-version в директории проекта:

Пример
cd /home/user/myproject
echo "3.13.0" > .python-version

Теперь при входе в эту директорию pyenv автоматически активирует Python 3.13. Проверка:

Пример
cd /home/user/myproject
python --version
cd ..
python --version
Python 3.13.0
Python 3.10.12

Создание изолированного окружения через pipx для установки CLI-инструментов

Установка pipx (через pip):

Пример
python3.13 -m pip install --user pipx
python3.13 -m pipx ensurepath

Установка инструмента, например, black (форматирование кода):

Пример
pipx install black
black --version
black, version 24.4.0

Проверка, что black использует Python 3.13:

Пример
which black
head -1 $(which black)
/home/user/.local/bin/black
#!/home/user/.local/pipx/venvs/black/bin/python

Сборка Python 3.13 с поддержкой Systemtap (только для дистрибутивов с Systemtap)

Конфигурация с флагом --with-systemtap:

Пример
./configure --with-systemtap --prefix=/opt/python313-stap
make -j$(nproc)
sudo make install

После установки можно отслеживать события интерпретатора Python через Systemtap:

Пример
sudo stap -e 'probe process("/opt/python313-stap/bin/python3.13").function("PyEval_EvalFrameEx") { printf("call %s\n", probefunc()) }' -c "/opt/python313-stap/bin/python3.13 -c 'print(42)'"

Результат (фрагмент):

call PyEval_EvalFrameEx
call PyEval_EvalCodeWithName
...

Тестирование производительности: сравнение Python 3.12 и 3.13

Создание бенчмарк-скрипта bench.py:

Пример
import time
def fib(n):
    if n < 2:
        return n
    return fib(n-1) + fib(n-2)

start = time.time()
result = fib(35)
print(f"fib(35) = {result}, time: {time.time()-start:.3f}s")

Запуск на обеих версиях:

Пример
python3.12 bench.py
python3.13 bench.py
fib(35) = 9227465, time: 6.789s
fib(35) = 9227465, time: 5.123s

Результат показывает улучшение производительности в Python 3.13.

Python 3.13 на Linux - comments

En
Python 3.13 linux (python)