【python】パッケージ管理のPoetryの使い方【djangoでお試し】

当ページのリンクには広告が含まれています。
  • URLをコピーしました!
目次

poetryとは?

https://python-poetry.org/

Poetryは、Pythonでの依存関係の管理パッケージ化のためのツールです。プロジェクトが依存するライブラリを宣言することができ、それらを管理(インストール/更新)します。

python-poetry.org

venvなどと比べてpoetryが優れている点は

  • pythonバージョンとライブラリの整合性が管理できる
  • ライブラリの管理が楽になる

この2点になります。特にvenvの場合には新しいパッケージをインストールした場合はrequirements.txtを更新しなければならずgitで管理する際に忘れてた!!なんてことが多々ありました。

poetryは自動的に更新してくれるため、めちゃくちゃ便利です。

poetryの初期設定

インストール

osx / linux/bash on windowsの場合は下記でインストールします。

https://python-poetry.org/docs/#installation

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -

非推奨ですが、1番手軽なのはpipでインストールする方法です。

$ pip install poetry

仮想環境の場所をプロジェクト内に変更

仮想環境の保存先をプロジェクト内に配置するように変更します。

$ poetry config virtualenvs.in-project true

この設定を行うことで、仮想環境のpathを設定する必要がなくなり楽になるからです。

poetryの基本の使い方

プロジェクトの作成 – poetry init

https://python-poetry.org/docs/basic-usage/#initialising-a-pre-existing-project

poetryの始め方は2種類あります。

  • 新規プロジェクトを作成 – poetry new $project_name
  • 既存のプロジェクトに作成 – poetry init

になります。今回はpoetry initを使用します。

$ poetry init

This command will guide you through creating your pyproject.toml config.

Package name [python-poetry]:
Version [0.1.0]:  
Description []:  
Author [tomioka-k <test@test.com>, n to skip]:  n
License []:  
Compatible Python versions [^3.10]:  

Would you like to define your main dependencies interactively? (yes/no) [yes]
You can specify a package in the following forms:
  - A single name (requests)
  - A name and a constraint (requests@^2.23.0)
  - A git url (git+https://github.com/python-poetry/poetry.git)
  - A git url with a revision (git+https://github.com/python-poetry/poetry.git#develop)
  - A file path (../my-package/my-package.whl)
  - A directory (../my-package/)
  - A url (https://example.com/packages/my-package-0.1.0.tar.gz)

Search for package to add (or leave blank to continue):

Would you like to define your development dependencies interactively? (yes/no) [yes]
Search for package to add (or leave blank to continue): 

Generated file

[tool.poetry]
name = "python-poetry"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]

[tool.poetry.dependencies]
python = "^3.10"

[tool.poetry.dev-dependencies]

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


Do you confirm generation? (yes/no) [yes]

全ての処理が完了すると、pyproject.tomlファイルが作成されます。

パッケージの追加 – petry add

https://python-poetry.org/docs/cli/#add

poetry add xxxxで追加します。今回はdjangoをインストールしてみましょう。

$ poetry add django

pyproject.tomlを確認すると、djangoが追加されていることが確認できます。

[tool.poetry]
name = "python-poetry"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]

[tool.poetry.dependencies]
python = "^3.10"
Django = "^4.0.4"

[tool.poetry.dev-dependencies]

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

また、開発環境用のパッケージの場合は引数に--devを追加します。

$ poetry add --dev flake8 autopep

仮想環境に入る – poetry shell

仮想環境に入る場合にはpoetry shellを行います。

$ poetry shell
Spawning shell within C:\Users\User1\AppData\Local\pypoetry\Cache\virtualenvs\python-poetry-MzFusAM8-py3.10

djangoのプロジェクトを作成してみましょう。

django-admin startproject config .を実行します。

$ django-admin startproject config .

プロジェクトファイルが生成されました。

仮想環境からコマンドを実行する – poetry run

前述では、poetry shellで仮想環境に入ってからコマンドを実行しましたが、shellからではなく直接実行することも可能です。poetry runで実行できます。

$ poetry run django-admin startapp app1

むしろこっちの使い方が楽ですね。

poetryの主なコマンド

requirements.txtの書き出し – poetry export

https://python-poetry.org/docs/cli/#export

requirements.txtファイルを作成したい場合には

poetry export -f requirements.txt --output requirements.txt

とします。すると全ての依存関係が記載されているrequirements.txtファイルが生成されます。

asgiref==3.5.0; python_version >= "3.8" \
    --hash=sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9 \
    --hash=sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0
django-environ==0.8.1; python_version >= "3.4" and python_version < "4" \
    --hash=sha256:6f0bc902b43891656b20486938cba0861dc62892784a44919170719572a534cb \
    --hash=sha256:42593bee519a527602a467c7b682aee1a051c2597f98c45f4f4f44169ecdb6e5
django==4.0.4; python_version >= "3.8" \
    --hash=sha256:07c8638e7a7f548dc0acaaa7825d84b7bd42b10e8d22268b3d572946f1e9b687 \
    --hash=sha256:4e8177858524417563cc0430f29ea249946d831eacb0068a1455686587df40b5
sqlparse==0.4.2; python_version >= "3.8" \
    --hash=sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d \
    --hash=sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae
tzdata==2022.1; sys_platform == "win32" and python_version >= "3.8" \
    --hash=sha256:238e70234214138ed7b4e8a0fab0e5e13872edab3be586ab8198c407620e2ab9 \
    --hash=sha256:8b536a8ec63dc0751342b3984193a3118f8fca2afe25752bb9b7fffd398552d3

現在のプロジェクトからパッケージをインストール – poetry install

pip install -r requirements.txtみたいな感じですね。

https://python-poetry.org/docs/cli/#install

$ poetry install

開発環境用のパッケージをインストールしたくない場合には--no-devを追加します。

$ poetry install --no-dev

パッケージ一覧を確認 – poetry show

https://python-poetry.org/docs/cli/#show

$ poetry show
asgiref        3.5.0  ASGI specs, helper code, and adapters
django         4.0.4  A high-level Python web framework that encourages rapid development and clean, pragmatic design.
django-environ 0.8.1  A package that allows you to utilize 12factor inspired environment variables to configure your Django application.
sqlparse       0.4.2  A non-validating SQL parser.
tzdata         2022.1 Provider of IANA time zone data

パッケージの削除 – poetry remove django

https://python-poetry.org/docs/cli/#remove

$ poetry remove django

これからどんどん使っていこうと思います!!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次