LoginSignup
31
34

More than 3 years have passed since last update.

Python パッケージマネージャー比較

Last updated at Posted at 2020-08-29
1 / 23

※ Pycon 2020 の企業ブースにて行った LT 用のスライドです


自己紹介

  • 山元 翔太
  • ビザスク アドバイザー開発チーム
  • フロントエンド中心

はじめに

  • Python は npm, bundler のような明確なデファクトスタンダードなツールがない
    • 大体のツールが pip を内部で使ってはいる
  • やりたいことや、開発スピード等を考慮して選定する

やりたいこと

  • 子依存まで含めたバージョンの固定
  • パッケージのバージョンアップ
  • 簡単なスクリプトの登録

話さないこと

  • パッケージのビルド、PyPI へ公開など
    • setup.cfg, wheel
    • ライブラリとして公開しないアプリケーションを想定

紹介するツール

  • pip-tools
  • pipenv
  • poetry

今回話さないツール

  • anaconda
    • 主に機械学習を行う環境を構築する際によく使われる
    • Web アプリの開発に利用するには向いていない
  • flit
  • Pyflow

pip-tools


バージョン管理

  • requirements.in, requirements.txt
    • dev-requirements.in 等を用意することで dev パッケージと分けることができる
    • pip-compile requirements.inrequirements.txt を生成する
    • pip-sync でインストールする

バージョンアップ

  • 個別にパッケージをアップデートする事ができる
    • pip-compile --upgrade-package django

簡単なスクリプトの登録

  • なし

pipenv


バージョン管理

  • Pipfile, Pipfile.lock
    • dev パッケージと分けて記述できる

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

[packages]
requests = "*"


[dev-packages]
pytest = "*"

バージョンアップ

  • すべてのパッケージをまとめて更新する
    • 個別にパッケージを更新することはできない
  • install 時にもすべてのパッケージを更新する
    • Pipfile に記述したバージョンを超えることはない

簡単なスクリプトの登録

  • Pipfile の scripts に記述する
    • pipenv run foo で実行
[scripts]
lint = "flake8"

その他


poetry


バージョン管理

  • pyproject.toml, poetry.lock
    • dev パッケージと分けて記述できる

[tool.poetry.dependencies]
requests = { version = "^2.13", extras = [ "security" ] }

[tool.poetry.scripts]
my-script = 'my_package:main'

バージョンアップ

  • 個別にパッケージの更新ができる
    • 子依存まで個別にアップデートする必要がある

簡単なスクリプトの登録

  • *.py を用意しそれを実行する機能がある
    • 直接コマンドを記述することはできない
    • 都度ファイルを用意する必要があるので手軽さはない
    • 複雑なことをするのには便利

その他

  • メンテナが少なく開発スピードが遅め

まとめ

  • pipenv
    • 最近リリースが増えて改めて活発になってきている?
  • poetry
31
34
1

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
31
34