изменение поэзии python версия до 3.x - PullRequest
1 голос
/ 07 марта 2020

Согласно документам поэзии , правильный способ настройки нового проекта - poetry new poetry-demo, однако это создает проект на основе устаревшего python2 .7 путем создания следующего файла Toml:

[tool.poetry]
name = "poetry-demo"
version = "0.1.0"
description = ""
authors = ["Harsha Goli <harshagoli@gmail.com>"]

[tool.poetry.dependencies]
python = "^2.7"

[tool.poetry.dev-dependencies]
pytest = "^4.6"

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"

Как я могу обновить это до 3.7? Простое изменение python = "^2.7" на python = "^3.7" приводит к следующей ошибке при запуске poetry install:

[SolverProblemError]
The current project's Python requirement (2.7.17) is not compatible with some of the required packages Python requirement:
  - zipp requires Python >=3.6

Because no versions of pytest match >=4.6,<4.6.9 || >4.6.9,<5.0
 and pytest (4.6.9) depends on importlib-metadata (>=0.12), pytest (>=4.6,<5.0) requires importlib-metadata (>=0.12).
And because no versions of importlib-metadata match >=0.12,<1.5.0 || >1.5.0
 and importlib-metadata (1.5.0) depends on zipp (>=0.5), pytest (>=4.6,<5.0) requires zipp (>=0.5).
Because zipp (3.1.0) requires Python >=3.6
 and no versions of zipp match >=0.5,<3.1.0 || >3.1.0, zipp is forbidden.
Thus, pytest is forbidden.
So, because poetry-demo depends on pytest (^4.6), version solving failed.

Ответы [ 2 ]

1 голос
/ 07 марта 2020

Интересно, что поэзия молча терпит неудачу из-за отсутствия пакета, на который опирается сам инструмент, и продолжает устанавливать сломанный вен. Вот как это исправить.

sudo apt install python3-venv
poetry env remove python3
poetry install

Мне пришлось удалить pytest, а затем переустановить с poetry add pytest.

РЕДАКТИРОВАТЬ: я столкнулся с этой проблемой снова при обновлении проекта с python3 .7 до python3 .8 - для этого вместо установки python3-venv вам нужно установить python3.8-venv вместо

0 голосов
/ 09 марта 2020

Всякий раз, когда вы вручную изменяете зависимости в своем pyproject.toml, вы должны позаботиться о следующих точках:

  1. Запустите poetry lock впоследствии или удалите файл poetry.lock, чтобы принудительно восстановить этого Это объясняется тем, что poetry install принимает poetry.lock в качестве входных данных, если его можно найти, а не pyproject.toml.

  2. Если вы измените версию python и используете в проекте virtualenv удалите .venv перед запуском poetry install. поэзия не меняет python версию venv после ее создания, потому что она использует саму версию python для создания virtualenv.

...