Python 3.13: полное руководство по настройке в Linux
Как установить Python 3.13 с возможностью переключения версий?
Основное решение для разработчиков, которым требуется гибкое управление версиями Python, - использование pyenv. Этот инструмент позволяет устанавливать несколько версий Python в изолированные каталоги и переключаться между ними на уровне оболочки или проекта.
Цель: получить возможность быстро менять версию Python без конфликтов с системным интерпретатором. Случай использования: работа над несколькими проектами с разными требованиями к версии Python или тестирование совместимости кода.
Пошаговая инструкция:
- Установка зависимостей 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-devPython install failed (ошибка установки python)
- Установка самого pyenv:
curl https://pyenv.run | bashPython скачать для 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 $SHELLPython dll load (загрузка python dll)
- Установка Python 3.13 через pyenv:
pyenv install 3.13.0Ubuntu 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)
- Проверка установленных версий и глобальная настройка:
pyenv versions pyenv global 3.13.0 python --versionHttps 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)
- Создание виртуального окружения (необязательно):
pyenv virtualenv 3.13.0 myproject pyenv activate myprojectPython 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, которым не требуется переключение между версиями.
Инструкция:
- Добавление PPA deadsnakes (часто содержит последние версии Python):
sudo add-apt-repository ppa:deadsnakes/ppa sudo apt updatePython portable linux (переносимая версия python для linux)
- Установка Python 3.13:
sudo apt install python3.13 python3.13-venv python3.13-dev - Проверка:
python3.13 --versionPython 3.13.0
- Создание виртуального окружения:
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 из исходного кода?
Цель: полный контроль над параметрами сборки (оптимизации, пути установки). Подходит для серверов и встраиваемых систем, где важна производительность.
Инструкция:
- Установка зависимостей (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 - Скачивание исходного кода 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 - Конфигурация с оптимизациями:
./configure --enable-optimizations --enable-shared --prefix=/opt/python3.13Флаг
--enable-optimizationsвключает профилирование и компиляцию с дополнительной оптимизацией (занимает больше времени).--prefixуказывает каталог установки. - Сборка и установка:
make -j$(nproc) sudo make install - Добавление в PATH:
echo 'export PATH="/opt/python3.13/bin:$PATH"' >> ~/.bashrc source ~/.bashrc python3 --versionPython 3.13.0
- Настройка динамических библиотек (если используется
--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) в предварительно собранном виде.
Инструкция:
- Скачивание и установка Miniconda:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.shСледовать интерактивному установщику, согласиться на добавление в PATH.
- Создание окружения с Python 3.13 (через conda-forge, так как основной канал может не содержать новую версию):
conda create -n py313 python=3.13 -c conda-forge conda activate py313 python --versionPython 3.13.0
Возможные проблемы:
- Не удаётся найти версию 3.13: выполнить обновление conda (
conda update conda) и обязательно использовать каналconda-forge. - Ошибка конфликта пакетов: в новом окружении устанавливать зависимости постепенно.
Как установить Python 3.13 с помощью Snap?
Цель: изолированная установка для быстрого тестирования без изменения системы. Snap-пакет от Canonical (только для дистрибутивов с поддержкой snap).
Инструкция:
- Установка snapd (если не установлен):
sudo apt install snapd sudo systemctl enable --now snapd.socket - Установка Python 3.13 из edge-канала (стабильная версия может отсутствовать):
sudo snap install python3.13 --edge --classicФлаг
--classicдаёт доступ к файловой системе. - Запуск Python 3.13:
python3.13 --versionPython 3.13.0
- Установка 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 --versionPython 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 --versionblack, 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.pyfib(35) = 9227465, time: 6.789s fib(35) = 9227465, time: 5.123s
Результат показывает улучшение производительности в Python 3.13.