背景
最近になってpythonの勉強を始めました。
poetryへpyside6やmanimを追加しようとした時にうまくいかなかったので、
解決方法のメモを残しておきます。
解法
pysideのバージョンは、pythonのバージョンによってバージョンが変わるので、
pythonバージョンの上限を設定すると良いそうです。
[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
[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のバージョンを変更してみます。
[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のバージョン指定を使った方法でもできました。
[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と同様の内容が追記されます。
関連リンク