Poetryについてもろもろ

最近の技術的な活動としては、Poetryのリポジトリからの通知にひたすら目を通すということをやっている。わたし自身はPoetryに結構期待をしていて、これからのPythonのプロジェクト管理のデファクトスタンダード的な立ち位置になってほしいと考えている。

Why Poetry?#

なぜ Poetry なのか。いくつか理由がある。

  • 依存関係の管理とパッケージングに関してのツールであり、その他の機能をなるべく持たない方針
    • Node.js の npm の npm-scripte のような機能を実装する提案があったが、棄却されている
  • pyproject.toml など比較的最近採用された規格を利用しており、独自規格を利用していない
    • requirements.txt も setupy.py も同時に置き換えられている
  • プロジェクト管理が Node.js でいう npm/yarn, Ruby でいう Bundler のような使用感が少しずつ実現されつつある(とわたしは感じる)

ちなみに pyflow というツールもあり、これにも少し未来を感じるけどまだ紹介するには時期尚早な感じがする1

Why not Pipenv?#

なぜ Pipenv ではないのかについても簡単に書いておく。

  • Pipfile は PEP で規格が規定されていない独自規格であり、実装が仕様という状態になっている
  • requirements.txt を置き換えているのみで、setup.py のレイヤーはサポートしていない
  • 2019年11月10日時点で最新リリースが2018年11月26日版であり、リリースが停滞している状態にある
    • 最新版からmasterへのコミットは600コミット以上あるのにどういういこと

最近のPoetryの開発#

最近の Poetry でわたしの興味の対象になっているトピックを書く。なおバージョンは 1.0.0b4 である。

プロジェクトに使う Python を選べるようになった#

poetry env use ${Python処理系へのパス} でそのプロジェクトに使う Python のバージョンを選べるようになった。もう 3.6 のプロジェクトで poetry を使うときは 3.6 に poetry をインストールし、 3.7 のプロジェクトで poetry を使うときは 3.7 にも poetry をインストールしないといけない、なんて面倒はしなくてよくなった。

コマンドラインオプションのバグが直った#

$ poetry run python --help

とやると、以前は poetry run の help が表示されてしまうバグがあった

しかし今は、python --help が表示されるように修正された。

終わりに#

他にもいろいろ思っていることはあるのだけど、とりあえずここまで。

Poetry の PR は結構たまっていて、正直あまり見られていないような気がしている。もしかすると、 1.0 マイルストーンにあるような Issue を優先的にしかかっているのかもしれない。

しかし GitHub は Git ホスティング、SNS というツールとしては安定性も高くいいと思うんだけど、プロジェクト管理にはとんと向いていない気がする。まぁ、「悪いほうが良い」のだろうか。


  1. こちらも PEP 518 で制定された pyproject.toml に加えて、PEP 582で制定された __pypackages__ を採用するなど独自規格でなく、Python 公式が制定している規格の範囲内で実現しようとしているツールである。 ↩︎