web-dev-qa-db-ja.com

詩の変更pythonバージョンを3.xに変更

詩のドキュメント によると、新しいプロジェクトをセットアップする適切な方法はpoetry new poetry-demo、ただし、次のtomlファイルを作成することで、非推奨のpython2.7に基づいてプロジェクトを作成します。

[tool.poetry]
name = "poetry-demo"
version = "0.1.0"
description = ""
authors = ["Harsha Goli <[email protected]>"]

[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.
1
arshbot

興味深いことに、ツール自体が依存しているパッケージが欠落しているため、詩は静かに失敗し、壊れたvenvをインストールし続けます。これを修正する方法は次のとおりです。

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

Pytestを削除してから、poetry add pytestで再インストールする必要がありました。

編集:私はプロジェクトをpython3.7からpython3.8にアップグレードするときにこの問題に再度遭遇しました-これのためにpython3-venvをインストールする代わりに、代わりにpython3.8-venvをインストールする必要があります

1
arshbot