17
16

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 5 years have passed since last update.

Poetryのすすめ

Last updated at Posted at 2019-11-27
1 / 7

Pythonのパッケージ機構

  • wheel: Pythonのパッケージ形式
    • Pythonのコードや共有ライブラリが入ったファイル (*.whl)
    • 他のパッケージに依存しているときはそれがメタデータに書いてある
  • PyPI: The Python Package Index
    • 誰でもログインするとアップロードできる
    • 会社内用など、独自にIndex自体を立てることも出来る
  • pip: パッケージインストーラ
    • パッケージをPyPIから探して来てインストールしてくれる
    • パッケージが依存しているパッケージも一緒にインストールくれる
    • 基本的にシステム(/usr/lib/python3.x/site-package)にインストールする
pip install numpy

Semantic Versioning

X.Y.Z 形式のバージョン付けを採用している

  1. APIの変更に互換性のない場合はメジャーバージョン(X)を、
  2. 後方互換性があり機能性を追加した場合はマイナーバージョン(Y)を、
  3. 後方互換性を伴うバグ修正をした場合はパッチバージョン(Z)を上げます。
pip install "numpy==1.15"
  • requirements.txtというファイルに依存しているパッケージを列挙しておいてまとめてインストールする
pip install -r requirements.txt

複数のプロジェクトを開発する

  • Project A
    • tensorflow == 1.15
    • 2.0系では動かない
  • Project B
    • tensorflow == 2.0
    • 1.0系では動かない

システムに複数のバージョンのパッケージを同時にインストールする事は出来ない!


venv (virtualenv)

  • プロジェクト毎にパッケージをインストールしたい
  • Python3.3から標準に入った
    • Python2.x向けにvirtualenvというパッケージがあった
python3 -m venv path/to/new/venv  # venvの作成
source path/to/new/venv/bin/activate  # 有効化
  • venv自体の管理は手動でやることになる
    • 典型的にはプロジェクト直下に venv ディレクトリを作る

pyproject.toml

  • Pythonのプロジェクト管理の為の公式ファイルフォーマット
    • PEP(Python Enhancement Proposals) 518
    • パッケージ化の設定 setup.py, setup.cfg や 依存パッケージのリスト requirements.txt などを統合
    • pip 19.2からサポート
      • setup.pyが無くてもpypoetry.tomlからpip installできる
  • ツールごとに名前空間 tool.${toolname} を作って独自設定を記述することが出来る
    • ツール毎に別設定ファイルを作らなくてもよくなった

poetry

  • pyproject.tomlベースでプロジェクト管理をしてくれるツール
    • poetry init でpyproject.tomlを生成してくれる
  • venvを勝手に作って管理してくれる
    • poetry run [shell script] で venv下でスクリプトを実行してくれる
  • PyPIへのアップロード機能もある
[tool.poetry]
name = "hello"
version = "0.1.0"
description = "Hello Poetry!"

[tool.poetry.dependencies]
python = "^3.7"   # Python自体のバージョンも書ける(満たしてるかチェックしてくれるだけ)
numpy = "1.14"    # ここに依存しているパッケージを書いていく

[tool.poetry.dev-dependencies]

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"
17
16
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
17
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?