1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

poetryでパッケージ追加時のpython依存関係解決メモ

Last updated at Posted at 2024-03-31

背景

最近になってpythonの勉強を始めました。

poetryへpyside6やmanimを追加しようとした時にうまくいかなかったので、
解決方法のメモを残しておきます。

解法

pysideのバージョンは、pythonのバージョンによってバージョンが変わるので、
pythonバージョンの上限を設定すると良いそうです。

pyproject.toml
[tool.poetry.dependencies]
- python = "^3.12" 
+ python = ">=3.12,<3.13"

他の方法もあります。

詳細

簡単なpoetryの使い方を交えて、今回のエラーについて記載しておきます。

もし結論の詳細から見たい場合は、こちらから飛べます。

1. poetry概要

poetryは、パッケージ管理の1つです。
pyproject.toml という設定ファイル内に、パッケージ名や外部パッケージのバージョン等を記載していきます。

まず、使用を始めるためにnewやinitコマンドを使います。

### ディレクトリごと新規作成する場合はnewを使う
poetry new sample

次に作成されたディレクトリ内に移動し、パッケージを追加していきます。
パッケージを追加する場合は、pipの代わりにaddコマンドを使います。

必要によってはバージョンの指定もできます。

### パッケージを追加
poetry add numpy

この際、 pyproject.toml ファイルの中には、メタデータや追加したパッケージについて
自動で記入されていきます。

pyproject.toml
pyproject.toml
[tool.poetry]
name = "sample"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.12"
numpy = "^1.26.4"


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

2. 問題発生 (pyside6の追加)

ここで、同様の手順でpyside6をインストールするとうまくいきませんでした。

$ poetry add pyside6
Using version ^6.6.3 for pyside6

Updating dependencies
Resolving dependencies... (0.0s)

The current project's supported Python range (>=3.12,<4.0) is not compatible with some of the required packages Python requirement:
  - pyside6 requires Python <3.13,>=3.8, so it will not be satisfied for Python >=3.13,<4.0

Because no versions of pyside6 match >6.6.3,<7.0.0
 and pyside6 (6.6.3) requires Python <3.13,>=3.8, pyside6 is forbidden.
So, because sample depends on pyside6 (^6.6.3), version solving failed.

  • Check your dependencies Python requirement: The Python requirement can be specified via the `python` or `markers` properties

    For pyside6, a possible solution would be to set the `python` property to ">=3.12,<3.13"

    https://python-poetry.org/docs/dependency-specification/#python-restricted-dependencies,
    https://python-poetry.org/docs/dependency-specification/#using-environment-markers

3. 解決 (pythonのバージョン指定)

重要なのは、以下の行です。

For pyside6, a possible solution would be to set the python property to ">=3.12,<3.13"

現在pythonのバージョンは ^3.12 (>=3.12,<4.0と同等の表記)なので、
ここを変更すると良いようです。

3.1 方法1

指示通り、 pyproject.toml のpythonのバージョンを変更してみます。

pyproject.toml
[tool.poetry.dependencies]
- python = "^3.12" 
+ python = ">=3.12,<3.13"

再度パッケージの追加を行うと、無事うまくいきました。

$ poetry add pyside6
Using version ^6.6.3 for pyside6

Updating dependencies
Resolving dependencies... (0.1s)

Package operations: 4 installs, 0 updates, 0 removals
...

これで環境構築が終わり、pysideに触れられそうです!

3.2 方法2

パッケージに対するpythonのバージョン指定を使った方法でもできました。

pyproject.toml
[tool.poetry.dependencies]
pyside6 = { version = "^6.6.2", python = "<3.13" }

編集後、インストールコマンドを実行すると追加されます。

poetry install

3.3 方法3

パッケージ追加時に --python= オプションを使ってもできました。

poetry add pyside6 --python=">=3.12,<3.13"

結果的に pyproject.toml 内に解法2と同様の内容が追記されます。

関連リンク

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?