【Python】パッケージ管理 Poetry ~ 基本編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2021/11/09/155903

の続き。

Poetry の基本的なノウハウをメモしておく。

目次

【1】Pythonバージョンを指定する場合
 1)手順
【2】依存パッケージを追加する場合
 1)開発のみ必要なライブラリ追加する場合
【3】Poetry  で設定したツール群をインストール
 1)補足:Windows上でのエラー「whl does not exist」の対応

【1】Pythonバージョンを指定する場合

* pyenv でバージョン指定する
 => インストールなどは、以下の関連記事を参照のこと。

仮想環境 ~ pyenv ~
https://dk521123.hatenablog.com/entry/2022/02/13/000000

1)手順

# インストールされているバージョンを確認
#  => バージョン確認できない場合は、
#        上記の関連記事を参考にpyenvをインストール
pyenv --version

# インストール可能なバージョンを表示
pyenv install --list

# 指定したバージョンをインストール
# pyenv install <python-version>
pyenv install 3.7.9

# グローバルなデフォルトを指定したバージョンに変更
# pyenv global <python-version>
pyenv global 3.7.9

【2】依存パッケージを追加する場合

# poetry add <package-name>
poetry add boto3

# パッケージのバージョンアップ
poetry update --dry-run
# poetry update

pyproject.toml の一部抜粋

[tool.poetry.dependencies]
python = "^3.8"
boto3 = "^1.20.1" << ★追加された

1)開発のみ必要なライブラリ追加する場合

# 開発のための依存関係必要なライブラリ追加
# (dev-dependencies)
# poetry add --dev <package-name>
poetry add --dev flake8
or
poetry add flake8 -D

【3】Poetry で設定したツール群をインストール

# Git上などから落としてきたソースについて、適用したい場合など
poetry install

1)補足:Windows上でのエラー「whl does not exist」の対応

Windows 上で「poetry install」したら、
以下の「エラー内容」が表示された

エラー内容

pyparsing-X.X.X-py2.py3-none-any.whl does not exist

解決案
https://qiita.com/radiol/items/a27530fd33b7e4758e6d

に載っていた対応を実行。

具体的には、poetryがインストールされているファイル
(C:\Users\ユーザー名\.poetry\installation\executor.py)を
以下のように修正したら、エラーなく実行できた

[修正版] executor.py

from poetry.core.packages.file_dependency import FileDependency
from poetry.core.packages.utils.link import Link
from poetry.core.packages.utils.utils import url_to_path # ADD
from poetry.core.pyproject.toml import PyProjectTOML

・・・略・・・

FileDependency(
    package.name,
    # Path(archive.path) # Comment out
    url_to_path(archive.url) # ADD
    if isinstance(archive, Link)
    else archive,
).hash(hash_type),

関連記事

パッケージ管理 Poetry ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/11/09/155903
Python formatter ~ black ~
https://dk521123.hatenablog.com/entry/2021/11/10/095258