Найти в Дзене

Запуск скриптов на разных версиях Python

Данная статья может пригодиться, когда есть одна/несколько программ, которые прекрасно работают. При этом нет необходимости эти программы трогать, но требуется написать новую программу на новой версии python или на той же версии python, но с обновленной библиотекой. Для того что бы обновление библиотеки или самого python не сломало текущие программы, правилом хорошего тона является создание своей виртуальной среды для каждой программы. В статье объясняется: Создание виртуальных сред в статье рассматривается только для ОС Windows. В конце статьи ссылка на исходники в GitLab. ОС: Windows 10 Язык: Python 3.12 и Python 3.13 (можно другие версии) Библиотеки: Django (как пример) Необходимо установить/иметь две различные версии python. При установке python необходимо указать галки: Сама установка python в статье не описывается. Открываем консоль cmd Создадим каталог для работы mkdir PY_PRJS_VENV Предположим, что у нас есть 2 проекта\программы: PRJ_PY312 и PRJ_PY313. Одна программа работ
Оглавление

Введение

Данная статья может пригодиться, когда есть одна/несколько программ, которые прекрасно работают. При этом нет необходимости эти программы трогать, но требуется написать новую программу на новой версии python или на той же версии python, но с обновленной библиотекой.

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

В статье объясняется:

  • как создать виртуальную среду при помощи venv
  • как применять шебанг для виртуальной среды
  • как запускать разные версии python

Создание виртуальных сред в статье рассматривается только для ОС Windows.

В конце статьи ссылка на исходники в GitLab.

Используемые технологии

ОС: Windows 10

Язык: Python 3.12 и Python 3.13 (можно другие версии)

Библиотеки: Django (как пример)

Предварительный этап

Необходимо установить/иметь две различные версии python.

При установке python необходимо указать галки:

  • Установить Python Launcher
  • Добавить python в PATH

Сама установка python в статье не описывается.

Скрин экрана установки python
Скрин экрана установки python

План работы

  • Организуем рабочее пространство
  • Работаем с виртуальной средой (создаем виртуальные среды, устанавливаем и удаляем библиотеки)
  • Создаем скрипты на python
  • Запускаем скрипты

Организуем рабочее пространство

Открываем консоль cmd

Создадим каталог для работы

mkdir PY_PRJS_VENV

Предположим, что у нас есть 2 проекта\программы: PRJ_PY312 и PRJ_PY313. Одна программа работает на 3.12 версии python, другая на 3.13 версии.

Создадим их

cd PY_PRJS_VENV
mkdir PRJ_PY312
mkdir PRJ_PY313

Работаем с виртуальной средой

Первым подготовим виртуальную среду для проекта PRJ_PY312

Переходим в проект PRJ_PY312

cd PRJ_PY312

Создаем виртуальную среду. Для этого запускаем не python.exe, а py.exe. Указываем ему какая версия python нам нужна. Указываем команду venv, с помощью неё мы создадим виртуальную среду. В названии виртуальной среды укажем "venv" (можно указать иное название).

py -3.12 -m venv venv

Активируем виртуальную среду. Это нужно для того чтобы внести в среду изменения.

venv\Scripts\activate

Устанавливаем библиотеку Django версию 5.2.2. Обращаю внимание, что установку производим в виртуальной среде.

py -m pip install Django==5.2.1

Можем посмотреть какие библиотеки установились помимо Django

pip freeze

Правилом хорошего тона считается фиксировать перечень внешних библиотек в отдельном файле. Сделаем это

pip freeze > requirements.txt

Для тренировки удалим все внешние библиотеки опираясь на созданный ранее файл.

pip uninstall -r requirements.txt -y

Теперь у нас нет внешних библиотек в виртуальной среде. Проверим:

pip freeze

Установим библиотеку Django повторно

py -m pip install Django==5.2.1

Зафиксируем изменения в файле

pip freeze > requirements.txt

На этом работу в виртуальной среде проекта PRJ_PY312 завершим. Деактивируем среду

deactivate

Теперь подготовим виртуальную среду для проекта PRJ_PY313

Переходим в проект PRJ_PY313

cd ../PRJ_PY313

Создаем виртуальную среду.

py -3.13 -m venv venv

Активируем виртуальную среду.

venv\Scripts\activate

Установим библиотеку Django

py -m pip install Django==5.2.2

Зафиксируем изменения в файле

pip freeze > requirements.txt

Деактивируем среду

deactivate

Создаем скрипты на python

Продолжаем работать в проекте PRJ_PY313

Создадим файл app.py

Структура проекта PRJ_PY313
Структура проекта PRJ_PY313

Код в файле app.py:

Текст кода ниже
Текст кода ниже

Первой строкой указываем шебанг (shebang). Он ссылается на папку venv (если ее назвали иначе, укажите ваше название), которая располагается рядом со скриптом. Фактически в папке venv сейчас располагается задублированный интерпретатор python со своим личным перечнем библиотек.

С помощью библиотеки platform выводим в консоль название версии python.

С помощью библиотеки importlib выводим версию библиотеки Django

Код:

#!./venv/Scripts/python
import platform
from importlib.metadata import version
print(f"python= {platform.python_version()}")
print(f"django= {version('django')}")

Скопируем файл app.py в проект PRJ_PY312.

Если сделано все как написано выше, то ничего менять в файле не надо.

Запускаем скрипты

Начнем с проекта PRJ_PY313

Запускаем скрипт через "py"

py app.py
Для проекта PRJ_PY313 запускается python 3.13
Для проекта PRJ_PY313 запускается python 3.13

Теперь переместимся в проект PRJ_PY312 и запустим там скрипт

cd ../PRJ_PY312
py app.py
Для проекта PRJ_PY312 запускается python 3.12
Для проекта PRJ_PY312 запускается python 3.12

Мы получили нужный нам результат.

Исходники проекта

Sign in · GitLab

Подписывайтесь на Дзен, а также приглашаю в мой телеграмм канал, там публикую другой, но не менее интересный контент.