TSUBOCK★LABO-ツボックラボ-

とあるセキュリティエンジニアの技術メモブログ

MENU

Pyenv+Poetryの環境でPandasをインストールしようとしたらエラーがでた

概要

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が発生したら、出力されているエラー内容をよく読んで対処しましょう。

参考URL