> For the complete documentation index, see [llms.txt](https://olexsyn.gitbook.io/enote/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://olexsyn.gitbook.io/enote/progr/python/virtual-environment.md).

# Virtual environment

Встановити pip в систему:

```
apt install python3-pip
```

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

```
python3 -m venv env
```

яке буде створено у піддиректорії `env` поточної директорії

Активація:

```
source env/bin/activate
```

Потім зробити це:

```
pip install --upgrade pip setuptools wheel
```

Це стандартна команда, яка **оновлює базові інструменти для встановлення Python-пакетів**.\
Вона не встановлює «щось зайве», а лише приводить середовище до нормального сучасного стану.

Розбираємо складові:

### 1. pip

Менеджер пакетів Python.

Оновлення потрібне тому, що старі версії pip:

* погано працюють з Python 3.12,
* не розуміють нових форматів коліс,
* інколи падають на етапі залежностей (як у твоєму випадку).

***

### 2. setuptools

Це утиліта, яка дозволяє збирати та встановлювати Python-пакети з вихідних кодів (source distribution).\
Багато пакетів без неї просто не встановляться.

***

### 3. wheel

Це інструмент для роботи з форматами *.whl* — попередньо зібраними пакетами.\
Якщо wheel застарілий або відсутній, pip доводиться компілювати пакети вручну, що часто ламається.

***

### Встановити модуль:

```
pip install JSON_minify
```

Встановити залежност з файлу:

```
pip install -r ./env/requirements.txt
```

Детальніше [про pip читай тут](/enote/progr/python/modules/pip.md).

Деактивація

```
deactivate
```

## Віртуальне середовище

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

Ось кілька основних причин використання віртуальних оточень:

1. **Ізоляція проектів:** Кожен проект може мати свої власні залежності, версії бібліотек та інші налаштування. Це усуває конфлікти між різними проектами, які можуть використовувати різні версії однієї й тієї ж бібліотеки.
2. **Управління залежностями:** Ви можете встановлювати, оновлювати та видаляти залежності для кожного проекту незалежно. Це полегшує управління бібліотеками та оновленнями.
3. **Чистота проекту:** Віртуальне оточення створює окремий каталог, в якому зберігаються всі файли, пов'язані з проектом. Це включає бібліотеки, скрипти та інше. Після завершення проекту ви можете легко видалити віртуальне оточення і уникнути забруднення системи.
4. **Переносність:** Віртуальне оточення легко передати іншим розробникам, і вони можуть легко відтворити аналогічне оточення для запуску проекту.

Для створення віртуального оточення ви можете використовувати вбудований модуль `venv` (в Python 3) або інструменти сторонніх розробників, такі як `virtualenv` або `conda`.

## Links

* :book: **Virtual environment** - 2018\_Python\_Tricks\_-\_Dan-Bader.pdf p.271
  * Виртуальная среда Python – Основы  - <https://python-scripts.com/virtualenv>
* Simple Python version management - <https://github.com/pyenv/pyenv>|pyenv
  * Установка pyenv - <http://ans.kiev.ua/wiki/python/pyenv>
  * Pyenv: удобный менеджер версий python - <https://khashtamov.com/ru/pyenv-python/>
  * PyEnv - Менеджер версий python - <https://habr.com/ru/post/203516/>
  * Использование нескольких версий Python на unix-подобных операционных системах - <https://ru.hexlet.io/blog/posts/ispolzovanie-neskolkih-versiy-python-na-unix-podobnyh-operatsionnyh-sistemah>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://olexsyn.gitbook.io/enote/progr/python/virtual-environment.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
