Команда Poetry 12 декабря сообщила о выходе Poetry 1.0.0. Разработчики благодарят сообщество и подчёркивают вклад активных контрибьюторов в проект. Этот релиз — важный этап развития проекта. В нём представлены новые функции, которые делают работу с проектами Python ещё удобнее.
Дефолтное поведение не изменилось: Poetry старается использовать текущую версию Python, чтобы создать для проекта виртуальное окружение. Однако если она несовместима с определёнными в настоящее время требованиями python
к файлу pyproject.toml
, Poetry попытается найти совместимую версию.
Более того, теперь есть возможность легко переключаться между версиями Python с помощью команды env use
.
poetry env use /full/path/to/python
Версию можно указать так:
poetry env use python3.7
Или даже так:
poetry env use 3.7
Чтобы отключить активированную virtualenv
, можно воспользоваться системной версией Python для получения поведения по умолчанию.
poetry env use system
Команда poetry env info
позволяет получить сведения об активированной virtualenv
. В выводе вы увидите примерно такую картину:
Virtualenv
Python: 3.7.1
Implementation: CPython
Path: /path/to/poetry/cache/virtualenvs/test-O3eWbxRl-py3.7
Valid: True
System
Platform: darwin
OS: posix
Python: /path/to/main/python
Узнать путь к virtualenv
можно с помощью команды poetry env info --path
. Команда poetry env list
формирует список virtualenv
:
test-O3eWbxRl-py2.7
test-O3eWbxRl-py3.6
test-O3eWbxRl-py3.7 (Activated)
Наконец, удалить virtualenv
можно с помощью команды env remove
.
poetry env remove /full/path/to/python
poetry env remove python3.7
poetry env remove 3.7
poetry env remove test-O3eWbxRl-py3.7
Хотя предыдущие версии Poetry поддерживали частные индексы, до выхода версии 1.0.0 не было удобного способа их контролировать. Теперь можно объявлять источник зависимостей:
[tool.poetry.dependencies]
# ...
pendulum = {version = "^2.0.5", source = "my-index"}
[[tool.poetry.source]]
name = "my-index"
url = "https://example.com"
Для удобства вы можете объявлять частный индекс вторичным. В этом случае он будет всегда использоваться последним, а PyPl останется предпочтительным.
[[tool.poetry.source]]
name = "my-index"
url = "https://example.com"
secondary = true
Также можно отключить PyPl, если объявить частный индекс дефолтным:
[[tool.poetry.source]]
name = "my-index"
url = "https://example.com"
default = true
Иногда, например, при использовании Poetry с инструментами CI, проще использовать переменные окружения, что позволяет не выполнять команды конфигурации. При объявлении переменных окружения необходимо использовать префикс POETRY_
, а имя параметров указывать в верхнем регистре. Точки и тире при этом заменяются андерскорами.
export POETRY_VIRTUALENVS_PATH=/path/to/virtualenvs/directory
Это можно использовать при работе с учётными данными:
export POETRY_HTTP_BASIC_MY_REPOSITORY_PASSWORD=secret
Poetry 1.0.0 позволяет указывать специфические для проекта настройки с помощью флага --local
в команде config
.
poetry config virtualenvs.create false --local
Локальные настройки хранятся в файле poetry.toml
.
settings.
можно не использоватьНастройки теперь хранятся отдельно, необходимости использовать префикс settings.
нет. Если вы уже указали настройки, придётся их изменить.
Читайте также полезные статьи из цикла «Продвинутый Python»:
- Часть 1: итераторы, генераторы, itertools.
- Часть 2: замыкания, декораторы, модуль functools.
- Часть 3: классы и метаклассы.
add
С помощью команды add
стало проще добавлять зависимости. Поддерживаются такие форматы:
pendulum
;requests@^2.23.0
;../my-package/my-package.whl
;../my-package/
;https://example.com/packages/my-package-0.1.0.tar.gz
.В ограничениях также можно указывать расширения.
poetry add "requests[security]"
Как следствие, параметры --git
и --path
были удалены. Если нужно обновить существующие зависимости, можно использовать ограничение latest
.
poetry add requests@latest
При публикации в PyPl можно использовать токены API вместо учётных данных. Настроить токены можно командой config
.
poetry config pypi-token.pypi my-token
Poetry 1.0.0 работает с репозиториями, которые защищены пользовательскими сертификатами или требуют аутентификации клиента с помощью сертификата. Ниже примеры настроек репозитория foo
для проверки с помощью хранилища сертификата и использования сертификата клиента. Обратите внимание, переменные конфигурации устанавливать не надо.
poetry config certificates.foo.cert /path/to/ca.pem
poetry config certificates.foo.client-cert /path/to/client.pem
Poetry 1.0.0 поддерживает маркеры окружения через свойство markers
.
[tool.poetry.dependencies]
pathlib2 = { version = "^2.2", markers = "python_version ~= '2.7' or sys_platform == 'win32'" }
Команда Poetry сделала очень много, но планов дальнейшего развития ещё больше. В ближайшее время планируется сделать Poetry расширяемой с помощью плагинов. Это станет шагом к созданию экосистемы вокруг Poetry и к появлению новых важных функций.