[Python] poetryの使い方 – パッケージ/プロジェクト管理の自動化
PoetryはPythonのパッケージ管理とプロジェクト依存関係の自動化を行うツールです。
新規プロジェクトはpoetry new プロジェクト名で作成し、既存プロジェクトではpoetry initで設定を開始します。
依存パッケージの追加はpoetry add パッケージ名、削除はpoetry remove パッケージ名で行います。
仮想環境の作成・管理も自動化され、poetry installで依存関係を一括インストール可能です。
Poetryとは何か
Poetryは、Pythonのパッケージ管理とプロジェクト管理を簡素化するためのツールです。
特に、依存関係の管理や仮想環境の構築を自動化することで、開発者がより効率的に作業できるように設計されています。
以下の特徴があります。
| 特徴 | 説明 |
|---|---|
| 依存関係の管理 | プロジェクトに必要なパッケージを簡単に追加・削除できる。 |
| 仮想環境の自動作成 | プロジェクトごとに独立した環境を自動で作成。 |
| ビルドと公開 | パッケージを簡単にビルドし、PyPIに公開できる。 |
| シンプルな設定 | pyproject.tomlファイルを使用して設定を管理。 |
Poetryを使用することで、Pythonプロジェクトの管理が一元化され、開発の効率が向上します。
特に、複数のプロジェクトを扱う際に、依存関係の衝突を避けることができるため、非常に便利です。
Poetryのインストール方法
Poetryは、Pythonのパッケージ管理ツールとして非常に便利ですが、まずはインストールが必要です。
以下の手順で簡単にインストールできます。
Pythonのインストール確認
Poetryを使用するには、Pythonがインストールされている必要があります。
以下のコマンドでPythonがインストールされているか確認します。
python --versionPoetryのインストール
Poetryは、公式のインストールスクリプトを使用して簡単にインストールできます。
以下のコマンドをターミナルで実行します。
curl -sSL https://install.python-poetry.org | python3 -環境変数の設定
インストール後、Poetryの実行ファイルがPATHに含まれるように環境変数を設定します。
以下のコマンドを実行して、設定を反映させます。
export PATH="$HOME/.local/bin:$PATH"インストール確認
Poetryが正しくインストールされたか確認するために、以下のコマンドを実行します。
poetry --versionこれで、Poetryのインストールは完了です。
バージョン情報が表示されれば、正常にインストールされています。
Poetryでプロジェクトを作成する
Poetryを使用すると、新しいPythonプロジェクトを簡単に作成できます。
以下の手順でプロジェクトを作成し、初期設定を行います。
プロジェクトの作成
新しいプロジェクトを作成するには、以下のコマンドをターミナルで実行します。
my_projectはプロジェクト名に置き換えてください。
poetry new my_projectこのコマンドを実行すると、以下のようなディレクトリ構造が作成されます。
my_project/
├── my_project
│ └── __init__.py
├── tests
│ └── __init__.py
└── pyproject.tomlpyproject.tomlの確認
プロジェクトのルートディレクトリには、pyproject.tomlという設定ファイルが生成されます。
このファイルには、プロジェクトのメタデータや依存関係が記述されます。
以下のような内容が含まれています。
[tool.poetry]
name = "my_project"
version = "0.1.0"
description = ""
authors = ["あなたの名前 <あなたのメールアドレス>"]
[tool.poetry.dependencies]
python = "^3.8"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"プロジェクトの依存関係を追加する
プロジェクトに必要なパッケージを追加するには、以下のコマンドを使用します。
例えば、requestsパッケージを追加する場合は次のようにします。
poetry add requestsこのコマンドを実行すると、pyproject.tomlに依存関係が追加され、poetry.lockファイルも生成されます。
これにより、プロジェクトの依存関係が管理されます。
プロジェクトのディレクトリに移動
プロジェクトを作成したら、そのディレクトリに移動します。
cd my_projectこれで、Poetryを使用したプロジェクトの作成が完了しました。
次のステップとして、依存関係の管理や仮想環境の設定を行うことができます。
依存関係の管理
Poetryは、プロジェクトの依存関係を簡単に管理できる機能を提供しています。
依存関係の追加、削除、更新を行う方法について詳しく説明します。
依存関係の追加
新しいパッケージをプロジェクトに追加するには、poetry addコマンドを使用します。
例えば、numpyパッケージを追加する場合は次のようにします。
poetry add numpyこのコマンドを実行すると、pyproject.tomlにnumpyが追加され、poetry.lockファイルも更新されます。
依存関係の削除
不要になったパッケージを削除するには、poetry removeコマンドを使用します。
例えば、numpyを削除する場合は次のようにします。
poetry remove numpyこのコマンドを実行すると、pyproject.tomlからnumpyが削除され、poetry.lockも更新されます。
依存関係の更新
プロジェクトの依存関係を最新のバージョンに更新するには、poetry updateコマンドを使用します。
以下のコマンドを実行します。
poetry updateこのコマンドは、すべての依存関係を最新の互換性のあるバージョンに更新します。
特定のパッケージのみを更新したい場合は、パッケージ名を指定します。
poetry update requests依存関係の確認
現在の依存関係を確認するには、以下のコマンドを使用します。
poetry showこのコマンドを実行すると、インストールされているパッケージのリストとそのバージョンが表示されます。
依存関係のロックファイル
poetry.lockファイルは、プロジェクトの依存関係の正確なバージョンを記録しています。
このファイルを使用することで、他の開発者が同じ環境を再現できるようになります。
新しい環境でプロジェクトをセットアップする際は、以下のコマンドを実行します。
poetry installこれにより、pyproject.tomlとpoetry.lockに基づいて、必要なパッケージがインストールされます。
Poetryを使用することで、依存関係の管理が非常に簡単になり、プロジェクトの整合性を保つことができます。
仮想環境の管理
Poetryは、プロジェクトごとに独立した仮想環境を自動的に作成し、管理する機能を提供しています。
これにより、異なるプロジェクト間での依存関係の衝突を防ぎ、クリーンな開発環境を維持できます。
以下に、仮想環境の管理方法を説明します。
仮想環境の作成
Poetryはプロジェクトを作成する際に、自動的に仮想環境を作成します。
特にコマンドを実行する必要はありませんが、手動で仮想環境を作成したい場合は、以下のコマンドを使用します。
poetry env use python3このコマンドは、指定したPythonバージョンを使用して新しい仮想環境を作成します。
仮想環境の確認
現在のプロジェクトに関連付けられている仮想環境を確認するには、以下のコマンドを実行します。
poetry env infoこのコマンドを実行すると、仮想環境のパスやPythonのバージョンなどの情報が表示されます。
仮想環境のアクティベート
仮想環境をアクティベートすることで、その環境内でコマンドを実行できます。
以下のコマンドを使用して仮想環境をアクティベートします。
poetry shellこのコマンドを実行すると、仮想環境がアクティベートされ、プロンプトが変更されます。
仮想環境を終了するには、exitと入力します。
仮想環境の削除
不要になった仮想環境を削除するには、以下のコマンドを使用します。
poetry env remove python3このコマンドは、指定したPythonバージョンの仮想環境を削除します。
プロジェクトの依存関係のインストール
仮想環境がアクティベートされている状態で、依存関係をインストールするには、以下のコマンドを実行します。
poetry installこれにより、pyproject.tomlとpoetry.lockに基づいて、必要なパッケージが仮想環境にインストールされます。
Poetryを使用することで、仮想環境の管理が非常に簡単になり、プロジェクトごとにクリーンな開発環境を維持することができます。
これにより、開発作業がスムーズに進むでしょう。
Poetryでのスクリプト実行
Poetryを使用すると、プロジェクト内でスクリプトを簡単に実行できます。
これにより、依存関係が正しく設定された環境でスクリプトを実行することができ、開発が効率的になります。
以下に、スクリプトの実行方法を説明します。
スクリプトの作成
まず、プロジェクト内にスクリプトファイルを作成します。
例えば、hello.pyというファイルを作成し、以下の内容を記述します。
# hello.py
def main():
print("こんにちは、Poetryの世界へようこそ!")
if __name__ == "__main__":
main()スクリプトの実行
Poetryを使用してスクリプトを実行するには、以下のコマンドを使用します。
プロジェクトのルートディレクトリで次のコマンドを実行します。
poetry run python hello.pyこのコマンドを実行すると、以下の出力が得られます。
こんにちは、Poetryの世界へようこそ!スクリプトの実行を簡略化する
頻繁に実行するスクリプトがある場合、pyproject.tomlにスクリプトを登録することで、実行を簡略化できます。
以下のように、[tool.poetry.scripts]セクションを追加します。
[tool.poetry.scripts]
hello = "hello:main"これにより、スクリプトを以下のコマンドで実行できるようになります。
poetry run helloこのコマンドを実行すると、同様の出力が得られます。
スクリプトの引数の受け取り
スクリプトに引数を渡すことも可能です。
例えば、greet.pyというファイルを作成し、以下の内容を記述します。
# greet.py
import sys
def main():
name = sys.argv[1] if len(sys.argv) > 1 else "世界"
print(f"こんにちは、{name}!")
if __name__ == "__main__":
main()このスクリプトを実行するには、以下のように引数を指定します。
poetry run python greet.py 太郎出力は次のようになります。
こんにちは、太郎!Poetryを使用することで、スクリプトの実行が簡単になり、依存関係を気にせずに開発を進めることができます。
これにより、開発者はより効率的に作業できるようになります。
プロジェクトのビルドと公開
Poetryを使用すると、Pythonプロジェクトを簡単にビルドし、PyPI(Python Package Index)に公開することができます。
以下に、プロジェクトのビルドと公開の手順を説明します。
プロジェクトのビルド
プロジェクトをビルドするには、以下のコマンドを実行します。
これにより、distディレクトリにビルドされたパッケージが生成されます。
poetry buildビルドが成功すると、以下のような出力が得られ、distフォルダ内に.tar.gzと.whlファイルが生成されます。
Building my_project (0.1.0)
- Building sdist
- Built my_project-0.1.0.tar.gz
- Building wheel
- Built my_project-0.1.0-py3-none-any.whlPyPIへの公開準備
PyPIに公開する前に、アカウントを作成し、APIトークンを取得する必要があります。
PyPIの公式サイト(https://pypi.org)にアクセスし、アカウントを作成してください。
次に、APIトークンを生成します。
認証情報の設定
取得したAPIトークンを使用して、Poetryに認証情報を設定します。
以下のコマンドを実行し、トークンを入力します。
poetry config pypi-token.pypi <YOUR_API_TOKEN><YOUR_API_TOKEN>の部分には、実際のAPIトークンを入力してください。
これにより、PoetryがPyPIにアクセスできるようになります。
プロジェクトの公開
プロジェクトをPyPIに公開するには、以下のコマンドを実行します。
poetry publish --buildこのコマンドは、ビルドを行い、生成されたパッケージをPyPIにアップロードします。
公開が成功すると、以下のようなメッセージが表示されます。
Publishing my_project (0.1.0) to PyPI
- Uploading my_project-0.1.0-py3-none-any.whl 100%
- Uploading my_project-0.1.0.tar.gz 100%公開後の確認
公開が完了したら、PyPIのウェブサイトで自分のパッケージが正しく表示されているか確認します。
URLは次のようになります。
https://pypi.org/project/my_project/これで、Poetryを使用したプロジェクトのビルドと公開が完了しました。
Poetryを利用することで、パッケージ管理が簡素化され、開発者はよりスムーズにプロジェクトを公開できるようになります。
便利なコマンドとTips
Poetryを使いこなすための便利なコマンドやヒントを紹介します。
これらを活用することで、プロジェクト管理がさらに効率的になります。
プロジェクトの依存関係を一括更新
すべての依存関係を一括で更新したい場合は、以下のコマンドを使用します。
poetry updateこのコマンドは、pyproject.tomlに記載された依存関係を最新の互換性のあるバージョンに更新します。
依存関係の詳細情報を表示
特定のパッケージの詳細情報を確認したい場合は、以下のコマンドを使用します。
poetry show <package_name>例えば、requestsパッケージの詳細を確認するには、次のようにします。
poetry show requestsプロジェクトのロックファイルを再生成
poetry.lockファイルを再生成したい場合は、以下のコマンドを使用します。
これにより、依存関係のバージョンが再解決されます。
poetry lock --no-updateスクリプトの実行
プロジェクト内で定義したスクリプトを簡単に実行するには、以下のコマンドを使用します。
poetry run <script_name>例えば、helloというスクリプトを実行する場合は次のようにします。
poetry run hello環境の確認
現在のプロジェクトの環境情報を確認するには、以下のコマンドを使用します。
poetry env infoこのコマンドは、仮想環境のパスやPythonのバージョンなどの情報を表示します。
プロジェクトの依存関係をエクスポート
プロジェクトの依存関係をrequirements.txt形式でエクスポートしたい場合は、以下のコマンドを使用します。
poetry export -f requirements.txt --output requirements.txtこのコマンドにより、requirements.txtファイルが生成され、他のプロジェクトで使用することができます。
プロジェクトの設定を確認
プロジェクトの設定を確認するには、以下のコマンドを使用します。
poetry config --listこのコマンドは、現在の設定をリスト表示します。
依存関係のバージョンを指定して追加
特定のバージョンのパッケージを追加したい場合は、以下のようにバージョンを指定します。
poetry add requests@^2.25.1これにより、指定したバージョンのrequestsパッケージが追加されます。
これらのコマンドやヒントを活用することで、Poetryをより効果的に利用し、Pythonプロジェクトの管理をスムーズに行うことができます。
まとめ
この記事では、Poetryを使用したPythonプロジェクトの管理方法について詳しく解説しました。
具体的には、Poetryのインストールからプロジェクトの作成、依存関係の管理、仮想環境の管理、スクリプトの実行、プロジェクトのビルドと公開、さらには便利なコマンドやTipsまでを紹介しました。
これを機に、Poetryを活用して自分のプロジェクトをより効率的に管理し、開発作業をスムーズに進めてみてはいかがでしょうか。