-
Notifications
You must be signed in to change notification settings - Fork 69
15. Venv, Poetry и управление зависимостями проекта
Данный раздел разделен на несколько частей(каждый пункт - это ссылка на соответствующий раздел):
Venv — библиотека в дистрибутиве Python, позволяющая создавать виртуальные окружения. Она идёт «из коробки» и её не надо устанавливать отдельно.
-
python3 -m venv --help
— вывод справки по командам в Venv;
Для создания виртуального окружения необходимо открыть терминал и выполнить команду:
Windows:
python -m venv {name} # папка получит имя `{name}`, обычно указывают название `venv`;
python -m venv venv
MacOS/Linux:
python3 -m venv {name} # папка получит имя `{name}`, обычно указывают название `venv`;
python3 -m venv venv
После выполнения команды в папке проекта появится папка venv
.
Для активации виртуального окружения необходимо выполнить команду:
Windows:
venv\Scripts\activate
MacOS/Linux:
source venv/bin/activate
После активации виртуального окружения в терминале появится префикс (venv)
.
Внутри папка venv
выглядит следующим образом:
venv
├── include
├── lib
| └── ...
├── Scripts
└── pyvenv.cfg
- в файле
pyvenv.cfg
прописан путь до Python, его версия и остальные настройки; - папка
include
содержит заголовочные файлы; - папка
lib
содержит библиотеки, которые используются и установлены в виртуальном окружении; - папка
Scripts
содержит исполняемые файлы для Windows. - папка
bin
содержит исполняемые файлы для MacOS/Linux.
Для деактивации виртуального окружения необходимо выполнить команду:
deactivate
Установка пакетов через pip в виртуальное окружение происходит также, как и в обычном окружении. Например, для установки библиотеки pytest
:
pip install pytest
Если в проекте есть файл requirements.txt
, то можно установить все зависимости из него:
pip install -r requirements.txt
Команда pip freeze
позволяет увидеть все установленные пакеты в виртуальном окружении.
Зависимости в проекте можно отобразить в файл requirements.txt
:
selene>=2.0.0rc9 # знак `>` установить версию 2.0.0rc9 и выше
pytest==6.2.5 # знак `==` установить только версию 6.2.5
allure-pytest~=2.9.43 # знак `~=` установить версию 2.9.43 и выше, но не 3.0.0. Это означает, что версия не должна быть выше 2.9.99
allure # если не указана версия, то установится последняя версия
Более правильный способ для указания зависимостей, это строгое указание версий библиотек. Это позволяет избежать проблем совместимости библиотек.
А именно, указывать версии библиотек в файле requirements.txt
через ==
:
pytest==6.2.5
Такая же библиотека, как Venv. Важно заметить, что она не идёт по умолчанию вместе с Python. Выполняет те же задачи, но содержит чуть больше функций.
-
pip install virtualenv
— установка Virtualenv; -
virtualenv --help
— справка по всем аргументам.
PyPA — организация, разрабатывающая инструменты управлениям проектами в Python. В GitHub-репозитории организации можно найти официальную документацию и исходный код инструментов.
pipenv
— объединяет в себе возможности Virtualenv (venv) и pip. К примеру, в pipenv может одной командой создать окружение и установить зависимости.
pipenv
проверяет хеш-суммы установленных пакетов и их зависимостей, что позволяет избежать проблем совместимости. Или же вредоносного кода, который может быть в пакете.
pipenv
создаёт файл Pipfile
, содержащий в себе все настройки и зависимости, а также файл Pipfile.lock
, в котором хранятся хеш-суммы установленных пакетов.
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
pytest = "*"
[dev-packages]
pylint = "*"
[requires]
python_version = "3.11"
В файле:
-
source
— источник из которого берутся пакеты; -
packages
— описание зависимостей; -
dev-packages
— зависимости, которые не нужны для запуска проекта, но нужны для разработчика; -
requires
— указание используемой версии Python. -
url — ссылка на источник пакетов;
-
verify_ssl — проверка SSL-сертификата;
-
name — имя источника.
-
python_version — версия Python.
-
*
— устанавливается последняя версия пакета. -
==
— устанавливается строго указанная версия пакета. -
>=
— устанавливается версия пакета и выше. -
~=
— устанавливается версия пакета и выше, но не выше следующей версии.
Команды:
-
pipenv shell
— активация виртуального окружения; -
pipenv install
— установка пакетов; -
pipenv instal -dev
— установка пакетов в[dev-packages]
.
Poetry — решает все те же проблемы, что описаны выше, и выполняет функции pipenv. Также позволяет управлять метаданными проекта.
Команды:
-
poetry --version
— справка по версии; -
poetry --help
— справка по функциям и аргументам; -
poetry new {name}
— создание окружения; -
poetry build
— сборка проекта. -
poetry init
— инициализация проекта;
-
poetry install
— установка зависимостей;
-
poetry add {package}
— добавление пакета; -
poetry remove {package}
— удаление пакета. -
poetry check
— проверка на ошибки в проекте;
После создания Poetry создаёт папку со всем необходимым содержимым. Она включает в себя:
-
tests
— папка с тестами; -
README.rst
— файл README; -
pyproject.toml
— файл с метаданными о проекте.
После установки зависимостей, Poetry создаёт файл poetry.lock
, в котором хранятся хеш-суммы установленных пакетов.
Файл pyproject.toml
содержит в себе метаданные о проекте:
[tool.poetry]
name = "with-poetry"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"
license = "MIT"
[tool.poetry.dependencies]
python = "^3.9"
[build-system]
requires = ["poetry-core>=1.0.0"]
[tool.poetry.dev-dependencies]
pytest = "^6.2"
-
name
— название проекта; -
version
— версия проекта; -
description
— описание проекта; -
authors
— авторы проекта и их контакты; -
readme
— файл README; -
license
— лицензия проекта; -
python
— версия Python; -
requires
— версия Poetry; -
dev-dependencies
— зависимости для разработки.
Чтобы добавить значение в dev-dependencies
, необходимо выполнить команду:
poetry add --dev pytest
А если нужно добавить значение в dependencies
, то:
poetry add pytest
✔️ Сайт
✔️ Чат в Telegram
✔️ Канал в Telegarm
Содержание
Командная строка
Кодировка UTF-8 в Java
Список полезных книг для автоматизаторов тестирования на языке Java
Список полезных книг для автоматизаторов тестирования на языке Python
Структура проекта
Github README.md
Java:
1. Вводное занятие. Сразу к практике.
2. Git. GitHub. Погружаемся.
3. Погружаемся в инструментарий и библиотеки
4. Основы Java
5. Продолжаем разрабатывать автотесты. PageObjects
6. JUnit 5
7. Allure Reports
8. Работа с файлами
9. Selenide #1
10. Jenkins. Создаем первую задачу
11. Управляем параметрами в коде и в Jenkins
12. Отправляем уведомления о результатах прохождения автотестов
13. Учимся быстро разрабатывать проекты для тестовых заданий
14. Selenoid
15. Библиотека Owner
16. REST API. Пишем автотесты с Rest assured
17. REST API. Декомпозируем UI тесты. Подключаем отчетность
18. REST API. Продолжаем изучать
19. Мобильная автоматизация #1. Разрабатываем автотесты с Browserstack
20. Allure TestOps
21. Переезд на собственную инфраструктуру Java
Python:
1. Вводное занятие. Сразу к практике!
2. Погружаемся в инструментарий и библиотеки
3. Git. GitHub. Погружаемся.
4. Основы Python
5. Selene #1
6. Основы Python. Часть II
7. Основы Python. Часть III
8. Page Object
9. Allure Reports
10. Работаем с файлами Python
11. Jenkins. Создаем первую задачу и управляем параметрами Python
12. Телеграм бот. Отправляем уведомления о результатах прохождения тестов
13. Pytest
14. Selenoid
15. Pytest. Часть II
16. Venv, Poetry и управление зависимостями проекта
17. REST API. Часть I. Пишем автотесты с Requests
18. REST API. Часть II. Продолжаем изучать
19. Мобильная автоматизация #1. Разрабатываем автотесты с Browserstack
20. Мобильная автоматизация #2. Разрабатываем автотесты с эмулятором Android устройства
21. Allure TestOps
22. Переезд на собственную инфраструктуру Python