6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PoetryをFishで使う(Pipenvからの移行)

Last updated at Posted at 2019-12-21

はじめに

2020 年の Python パッケージ管理ベストプラクティスがバズっていたので調べてみたところ、以前から気になっていたPoetryがかなり良くなっているということなので、Pipenvから移行してみた。

環境

OS: macOS 10.15 Catalina
Shell: Fish

Poetryのインストール

pip install poetry

環境変数設定

Pipenvでは、仮想環境がプロジェクトフォルダに作成されるように、以下のように設定していた。

export PIPENV_VENV_IN_PROJECT=true

Poetryでは以下のように設定すれば良いらしい。

poetry config --list
poetry config virtualenvs.in-project true

#Pipfile→pyproject.toml
Poetryではpyproject.tomlでライブラリを管理するため、変換が必要になる。
幸いにも、変換ツールpoetrifyが公開されているので、それを用いることにする(詳しくは作者のブログを参照)。


pip install poetrify
cd example/
poetrify generate

試しにPipfileを変換してみるとうまくいった。

Pipfile
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
black = "==18.3a1"
mypy = "*"
pytest = "*"

[packages]
numpy = "*"
scipy = "*"
plotly = "*"
sklearn = "*"

[requires]
python_version = "3.7"
pyproject.toml
[tool.poetry]
name = "exampy"
version = "0.1.0"
description = ""
authors = ["ryoppippi <1560508+ryoppippi@users.noreply.github.com>"]

[tool.poetry.dependencies]
python = "^3.7"
numpy = "^1.17.4"
scipy = "^1.4.1"
plotly = "^4.4.1"
sklearn = "^0.0"

[tool.poetry.dev-dependencies]
black = "^19.10b0"
mypy = "^0.761"
pytest = "^5.3.2"

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

仮想環境の構築

以下を実行すると仮想環境の構築、poetry.lockファイルの作成が行われ、仮想環境が起動する。

poetry shell

Dec-21-2019 19-44-51.gif

Fish向けプラグイン

筆者はFishをシェルとして使用しているが、Pipenv時代にはfish-pipenvというプラグインを愛用していた。
このプラグインは、pipenvで構築したプロジェクトのディレクトリに移動した時に自動で仮想環境をactivateしてくれる優れものであった。
残念ながらPoetry用にはまだ同等のものがなかったので、今回自作した。是非とも活用して欲しい。
fish-poetry
Dec-21-2019 19-55-32.gif

まとめ

Pyenvとの連携が若干微妙だったりと不満点もなくはないが、圧倒的にlockが早く終わるなど利点も多い。順次Poetryに移行していこうと思う。

6
3
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
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?