概要
Pyenv+Poetryの環境でPandasをインストールしようとしたら下記のようなエラーが発生。
- 実行コマンド
$ poetry add pandas
- 出力エラー
$ poetry add pandas Using version ^1.2.0 for pandas pyproject.toml+ ◀◀ buffers Updating dependencies Resolving dependencies... (0.0s) SolverProblemError The current project's Python requirement (>=3.7,<4.0) is not compatible with some of the required packages Python requirement: - pandas requires Python >=3.7.1, so it will not be satisfied for Python >=3.7,<3.7.1 Because pandas (1.2.0) requires Python >=3.7.1 and no versions of pandas match >1.2.0,<2.0.0, pandas is forbidden. So, because osint-app depends on pandas (^1.2.0), version solving failed. at ~/.poetry/lib/poetry/puzzle/solver.py:241 in _solve 237│ packages = result.packages 238│ except OverrideNeeded as e: 239│ return self.solve_in_compatibility_mode(e.overrides, use_latest=use_latest) 240│ except SolveFailure as e: → 241│ raise SolverProblemError(e) 242│ 243│ results = dict( 244│ depth_first_search( 245│ PackageNode(self._package, packages), aggregate_package_nodes • Check your dependencies Python requirement: The Python requirement can be specified via the `python` or `markers` properties For pandas, a possible solution would be to set the `python` property to ">=3.7.1,<4.0" https://python-poetry.org/docs/dependency-specification/#python-restricted-dependencies, https://python-poetry.org/docs/dependency-specification/#using-environment-markers
エラー内容の確認と対処
どうやら
For pandas, a possible solution would be to set the `python` property to ">=3.7.1,<4.0"
ということでpandasが求めているバージョンではないとのこと。
pyproject.tomlのpythonの箇所を">=3.7.1,<4.0"
に変更。
$ vim pyproject.toml ---- 変更前: python = "^3.7" 変更後: python = ">=3.7.1,<4.0"
ちゃんと変更が反映されているか確認。
$ cat pyproject.toml | grep python python = ">=3.7.1,<4.0"
再インストール
.venvがある場合は一旦削除してからpyproject.tomlがあるディレクトリでpoetry installを実行し、.venvを生成。
$ poetry install
.venvが無い場合、もしくは新しく作り直した後、poetry add pandas
を実行。
$ poetry add pandas Using version ^1.2.0 for pandas Updating dependencies Resolving dependencies... (75.3s) Writing lock file Package operations: 5 installs, 0 updates, 0 removals • Installing six (1.15.0) • Installing numpy (1.19.4) • Installing python-dateutil (2.8.1) • Installing pytz (2020.5) • Installing pandas (1.2.0): Installing... • Installing pandas (1.2.0)
これで無事pandasがインストールできました。
まとめ
SolverProblemError
が発生したら、出力されているエラー内容をよく読んで対処しましょう。