Початок роботи з віртуальними середовищами в Python

Знайомство з віртуальними середовищами Python

У цій публікації ми розглянемо, як налаштувати та використовувати віртуальні середовища Python на платформах Windows і Linux.

Під час роботи над кількома проектами у локальному середовищі розробки, часто виникають проблеми з залежностями. Запровадження віртуальних середовищ для кожного проєкту може значно спростити управління цими залежностями та потребами проєкту.

Давайте розберемося, як створювати та активувати ці віртуальні середовища, щоб ви могли повною мірою скористатися їх перевагами. 👩🏽‍💻

Що таке віртуальні середовища?

Віртуальні середовища – це відокремлені та незалежні контейнери для коду та його залежностей.

Але навіщо їх використовувати?

Основна причина полягає в тому, що вони дозволяють вам використовувати різні версії тих самих бібліотек для різних проєктів. Це гарантує, що зміни в одній версії не вплинуть на інші проєкти, які використовують іншу версію тієї ж бібліотеки. Давайте розглянемо це детальніше.

Встановлення пакетів у Python

Стандартна бібліотека Python містить багато корисних модулів для юніт-тестування, взаємодії з операційною системою, обробки дат і часу, та багато іншого.

Однак, працюючи над проєктами, вам часто потрібно встановлювати додаткові пакети, розроблені спільнотою Python. Це особливо актуально для таких галузей, як веб-скрейпінг, машинне навчання та веб-розробка.

Для встановлення та управління цими пакетами, можна використовувати такі інструменти, як conda або pip.

Кожен проєкт зазвичай потребує певного набору пакетів. Коли всі пакети встановлюються глобально у вашому середовищі розробки, всі проєкти використовують їх спільно.

Чому це може бути проблемою?

У вашому середовищі розробки може бути встановлено безліч пакетів. Але проєкт, над яким ви зараз працюєте, може використовувати лише декілька з них. Коли всі проєкти залежать від одного набору встановлених пакетів, стає важко визначити, які залежності належать до конкретного проєкту.

Є ще один важливий аспект. Уявіть, що у вас є проєкт, який використовує Django 2.2. Якщо ви почнете роботу над новим проєктом, який використовує Django 4, і встановите останню версію Django, що станеться?

Що буде з існуючою інсталяцією?

Існуюча версія буде замінена новою, що ви встановили. Це може призвести до того, що ваші попередні проєкти Django будуть працювати некоректно, тому що нові версії можуть містити зміни або застарілі функції.

Отже, управління залежностями стає складним, коли всі пакети встановлюються глобально, оскільки кожен проєкт потребує власного набору бібліотек для роботи.

Як функціонують віртуальні середовища

Ми вже зіткнулися з проблемами, пов’язаними з глобальним встановленням пакетів. Давайте розглянемо, як віртуальні середовища вирішують ці проблеми.

Коли ви створюєте та активуєте віртуальне середовище, ви можете встановлювати лише ті пакети, які необхідні для конкретного проєкту.

Повертаючись до прикладу з Django, з віртуальними середовищами ви можете використовувати проєкти, що працюють на Django 2.2 і Django 4, без конфліктів. Це можливо, тому що інсталяції Django не є глобальними, а обмежені віртуальними середовищами відповідних проєктів.

Фактично, віртуальні середовища – це відокремлені контейнери, які зберігають як код, так і залежності для кожного проєкту.

Переваги використання віртуальних середовищ

Тепер, коли ви розумієте, як працюють віртуальні середовища в Python, давайте перелічимо їхні переваги:

  • Віртуальні середовища створюють відокремлені середовища розробки для окремих проєктів, дозволяючи встановлювати лише необхідні пакети для кожного з них.
  • Оскільки віртуальні середовища є незалежними та відокремленими, різні проєкти можуть використовувати різні версії однієї бібліотеки, в залежності від потреб. Також, вам не потрібно турбуватися про системні дозволи при встановленні бібліотек і налаштуванні середовища розробки.
  • Після встановлення пакетів у віртуальному середовищі, ви можете записати залежності у файл `requirements.txt`. Це дозволяє іншим розробникам відтворити середовище проєкту та інсталювати потрібні пакети однією командою.

Тепер, коли ви дізналися про переваги віртуальних середовищ, розгляньмо кілька популярних інструментів для їх створення та управління.

#1. Virtualenv

Virtualenv є одним із найпопулярніших інструментів для створення та управління віртуальними середовищами в Python. Функціонал virtualenv частково представлений в пакеті venv. Проте virtualenv є швидшим і більш розширюваним у порівнянні з venv.

#2. Pipenv

Pipenv поєднує функціональність virtualenv для створення віртуальних середовищ і можливості pip для управління пакетами. Він використовує `Pipfile` для відстеження залежностей проєкту всередині віртуального середовища.

Ви можете ознайомитися з Pipenv прямо в браузері на цьому онлайн-майданчику.

#3. Conda

Якщо ви використовуєте Anaconda Python для розробки, ви можете скористатися conda для управління пакетами та створення віртуальних середовищ.

Для отримання більш детальної інформації, перегляньте цей вичерпний посібник з управління середовищами за допомогою conda.

#4. Poetry

Poetry – це інструмент управління пакетами, який дозволяє керувати залежностями у всіх ваших проєктах Python. Для початку роботи з Poetry вам знадобиться Python 3.7 або новіша версія.

#5. Venv

Як вже згадувалося, venv пропонує підмножину можливостей virtualenv, але має перевагу в тому, що він вбудований у стандартну бібліотеку Python починаючи з версії 3.3.

Він доступний одразу після встановлення Python і не потребує встановлення додаткових пакетів. Ми використовуватимемо його в цьому посібнику для створення та роботи з віртуальними середовищами. ✅

Створення віртуального середовища Python в Ubuntu

💬 Для виконання наступних кроків вам знадобиться локальна інсталяція Python 3. Переконайтеся, що ви використовуєте Python 3.5 або пізнішу версію.

У цьому розділі описано кроки для створення та активації віртуальних середовищ на машині Ubuntu Linux. Ті самі кроки можуть використовуватися і в інших дистрибутивах Linux.

Для зручності, давайте створимо каталог проєкту та перейдемо до нього. Саме в цьому каталозі ми створимо наше віртуальне середовище за допомогою venv.

$ mkdir my_project
$ cd my_project

Загальний синтаксис для створення віртуального середовища такий: `python3 -m venv <ім’я-або-шлях-до-середовища>`. Наприклад, ця команда створить віртуальне середовище з назвою `my_env` у вашому поточному каталозі:

$ python3 -m venv my_env

Активація та встановлення пакетів у віртуальному середовищі

Після створення віртуального середовища, ви можете його активувати та встановити потрібні пакети. Для активації використовуйте наступну команду:

$ source my_env/bin/activate

Після активації, щоб перевірити список встановлених пакетів, введіть команду:

$ pip list

Наразі ми не встановили жодного пакету, тому ви побачите лише setuptools і pip, які встановлюються за замовчуванням у кожному віртуальному середовищі.

Встановлення pip у віртуальному середовищі дозволяє встановлювати пакети, потрібні для конкретного проєкту, і саме тому ви отримуєте незалежне середовище розробки для кожного проєкту.

Тепер, коли ви активували віртуальне середовище, ви можете встановити в ньому пакети за допомогою pip. Наприклад, давайте встановимо requests – одну з найпопулярніших бібліотек для надсилання HTTP-запитів і роботи з веб-API.

$ pip install requests

В процесі встановлення бібліотеки requests, ви побачите, що разом з нею будуть встановлені всі необхідні їй залежності.

$ pip list

Ви можете скористатися командою `pip freeze` і перенаправити вивід у файл `requirements.txt`, як показано нижче:

$ pip freeze > requirements.txt

Перевіривши вміст поточного каталогу проєкту, ви побачите що файл `requirements.txt` було створено.

$ ls
# my_env requirements.txt

Після завершення роботи над проєктом, ви можете деактивувати віртуальне середовище командою:

$ deactivate

Створення віртуального середовища Python у Windows

Як правило, для розробки краще використовувати середовище Linux. Якщо ви працюєте на Windows, ви можете розглянути можливість використання підсистеми Windows для Linux (WSL) для налаштування термінального середовища Ubuntu для локальної розробки.

Але якщо ви використовуєте Windows, ви можете використовувати Windows PowerShell або командний рядок і створювати віртуальні середовища командою:

> python -m venv <шлях-до-середовища>

Активація віртуального середовища

Активація віртуальних середовищ у Windows залежить від того, використовуєте ви командний рядок чи Windows PowerShell.

Якщо ви працюєте в командному рядку, то для активації віртуального середовища введіть команду:

> <шлях-до-середовища>\Scripts\activate.bat

Якщо ви працюєте в Windows PowerShell, то для активації віртуального середовища введіть команду:

> <шлях-до-середовища>\Scripts\Activate.ps1

Після активації, ви можете встановити усі необхідні пакети у вашому віртуальному середовищі.

Для деактивації віртуального середовища, ви можете використовувати команду `deactivate` як в командному рядку, так і в Windows PowerShell.

Висновок

У цій статті ми обговорили проблеми, пов’язані з глобальним встановленням пакетів і те, як вони ускладнюють управління залежностями в проєктах Python. Віртуальні середовища дозволяють більш ефективно керувати залежностями, створюючи ізольовані середовища для окремих проєктів.

Серед різних інструментів для створення віртуальних середовищ, ми навчились використовувати `venv`, який вбудований у стандартну бібліотеку Python, для створення та активації віртуальних середовищ.

У виділеному віртуальному середовищі проєкту ви можете встановити потрібні версії бібліотек. Ці залежності можна зафіксувати у файлі `requirements.txt`, що дозволяє іншим розробникам легко відтворити середовище проєкту.

Тому приступаючи до наступного проєкту на Python, обов’язково використовуйте віртуальні середовища для кращого управління залежностями. Бажаю успіхів у кодуванні! 🎉