Как получить Python, который можно носить с собой на флешке

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

Для чего нужна переносимая версия Python на Linux?

Переносимый Python (portable) позволяет использовать интерпретатор без установки в системные каталоги. Это удобно, когда нет прав root, требуется изолированное окружение для проекта, или нужно запускать код на разных компьютерах. В отличие от обычной установки portable версия не затрагивает системные библиотеки и может храниться на флешке.

Как установить Python в произвольную папку из официального архива?

Самый простой способ получить portable Python на Linux – скачать с python.org tarball с уже скомпилированными бинарниками. Архив содержит интерпретатор, стандартную библиотеку и pip. Для распаковки не требуются root-права.

Шаги:

  1. Загрузка нужной версии (например, 3.11.5):
    wget https://www.python.org/ftp/python/3.11.5/Python-3.11.5.tar.xz

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

  2. Распаковка:
    tar -xf Python-3.11.5.tar.xz

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

  3. Переход в папку:
    cd Python-3.11.5

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

  4. Запуск Python:
    ./python/bin/python3.11

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

  5. Для удобства следует добавить папку bin в PATH:
    export PATH=$PWD/python/bin:$PATH

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

    или создать alias:
    alias python311='$PWD/python/bin/python3.11'

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

Цель: быстрый старт, минимальные зависимости, перенос папки на USB-накопитель.

Как использовать Python как единый исполняемый файл с AppImage?

AppImage – формат, упаковывающий приложение с зависимостями в один файл. Существуют готовые AppImage для Python (проект python-appimage).

Скачать файл:

wget https://github.com/niess/python-appimage/releases/download/3.11/python3.11.5-cp311-cp311-manylinux2014_x86_64.AppImage

Python 3.13 linux (python 3.13 на linux)

Сделать исполняемым:

chmod +x python3.11.5*.AppImage

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

Запуск:

./python3.11.5*.AppImage

AppImage монтирует образ и работает из временной папки. Это полностью изолировано. Ограничение: версия glibc должна быть не ниже той, что указана в AppImage (обычно manylinux2014).

Как перенести Python с окружением через Docker?

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

Создание Dockerfile:

FROM python:3.11-slim\nWORKDIR /app\nCOPY . .\nRUN pip install -r requirements.txt

Сборка образа:

docker build -t mypyth .

Сохранение в архив:

docker save mypyth | gzip > mypyth.tar.gz

На другой машине загрузка:

gunzip -c mypyth.tar.gz | docker load

Запуск:

docker run -it --rm -v $(pwd):/app mypyth python script.py

Цель: перенос всего окружения, включая пакеты, на любую машину с Docker.

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

Если нужна версия, собранная с определёнными параметрами, можно скомпилировать из исходного кода.

Скачать исходники:

wget https://www.python.org/ftp/python/3.11.5/Python-3.11.5.tar.xz\ntar -xf Python-3.11.5.tar.xz\ncd Python-3.11.5

Настройка сборки с префиксом в локальную папку:

./configure --prefix=$HOME/python311 --enable-optimizations

Сборка:

make -j$(nproc)

Установка:

make install

Теперь Python находится в $HOME/python311. Эту папку можно скопировать на флешку.

Цель: полный контроль над опциями компиляции, минимальный размер.

Как pyenv помогает в создании portable версий?

pyenv устанавливает версии Python в ~/.pyenv/versions/. Каждую версию можно скопировать отдельно.

# Установка версии командой pyenv install 3.11.5\n# Копирование папки на флешку\ncp -r ~/.pyenv/versions/3.11.5 /mnt/usb/python311

Затем на другой системе запуск через полный путь:

/mnt/usb/python311/bin/python3.11

Цель: управление несколькими версиями, удобство при разработке.

Типичные проблемы и способы их решения

1. Ошибка "cannot find libpython3.11.so.1.0":

Причина: бинарник ищет разделяемую библиотеку, но её нет в стандартных путях. Решение: добавить путь к библиотеке в LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=/path/to/python/lib:$LD_LIBRARY_PATH

Или использовать статическую сборку.

2. Ошибка "No such file or directory" при запуске Python из tarball:

Причина: несовместимость glibc (бинарник собран под новую версию). Решение: скачать версию, собранную для более старой glibc (например, manylinux2014). Или собрать Python на целевой системе.

3. Проблемы с правами доступа при копировании на флешку с файловой системой FAT32:

Решение: использовать файловую систему ext4 или exFAT, сохранить атрибуты через tar-архив.

4. Отсутствие pip в portable версии:

Решение: установить pip с помощью get-pip.py:

wget https://bootstrap.pypa.io/get-pip.py\n./python/bin/python3 get-pip.py

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

Пример с официальным tarball и установкой пакета

Пример
mkdir ~/portable_python
cd ~/portable_python
wget https://www.python.org/ftp/python/3.11.5/Python-3.11.5.tar.xz
tar -xf Python-3.11.5.tar.xz
cd Python-3.11.5
./python/bin/python3.11 -m ensurepip --upgrade
./python/bin/python3.11 -m pip install requests
./python/bin/python3.11 -c "import requests; print(requests.__version__)"
Collecting requests
  ...
Successfully installed requests-2.31.0
2.31.0

Пример с AppImage и виртуальным окружением

Пример
wget -O python33.AppImage https://github.com/niess/python-appimage/releases/download/3.3/python3.3.7-cp33-cp33m-manylinux1_x86_64.AppImage
chmod +x python33.AppImage
./python33.AppImage -m venv myenv
source myenv/bin/activate
python --version
Python 3.3.7

Пример с Docker экспортом и импортом образа

Пример
# На первой машине
docker pull python:3.11-slim
docker create --name tmp python:3.11-slim
docker export tmp | gzip > python311.tar.gz
# На второй машине
gunzip -c python311.tar.gz | docker import - python311:portable
docker run -it --rm python311:portable python -c "print('Hello from portable python')"
Hello from portable python

Пример компиляции с фиксацией rpath

Пример
wget https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tar.xz
tar -xf Python-3.10.12.tar.xz
cd Python-3.10.12
./configure --prefix=$HOME/portable_python310 --enable-shared LDFLAGS="-Wl,-rpath,$HOME/portable_python310/lib"
make -j$(nproc)
make install
$HOME/portable_python310/bin/python3.10 -c "import sys; print(sys.path)"
['', '/home/user/portable_python310/lib/python310.zip', '/home/user/portable_python310/lib/python3.10', ...]

Пример переноса версии из pyenv на флешку

Пример
# Установка версии через pyenv (если установлен)
pyenv install 3.11.5
# Копирование на флешку (предположим, смонтирована в /mnt/usb)
cp -r ~/.pyenv/versions/3.11.5 /mnt/usb/python311
# На новой системе запуск
export PATH=/mnt/usb/python311/bin:$PATH
python3.11 -c "import platform; print(platform.platform())"
Linux-5.15.0-91-generic-x86_64-with-glibc2.35

Переносимая версия Python для Linux - comments

En
Python portable linux (python)