※記事内に商品プロモーションを含むことがあります。
はじめに
Pythonのプロジェクト設定ファイルpyproject.toml
に記載されたPythonのライブラリを、パッケージ管理システムpipでインストールする方法を解説します。
pyproject.toml
は、Pythonプロジェクトのメタ情報を保存するためのTOML形式の設定ファイルです。pyproject.toml
が導入された経緯についてはPEP 518に、基本的な仕様についてはPEP 621にそれぞれ記載されています。
pyproject.toml
には以下のような情報を記載できます。
- 使用するサードパーティ製ライブラリや、そのバージョン情報
- 作成したPythonパッケージの名称・バージョン情報
- 2.のパッケージの実行に必要なPythonのバージョン
1.を記述できるPythonの設定ファイルとしてrequirements.txt
がありますが、このファイルは2.や3.を記述できる仕様になっていません(コメントとしては記述できます)。特に複数人でPythonパッケージを開発する場合、pyproject.toml
を使用して開発環境を共有できると便利です。
また、pyproject.toml
に対応したPythonパッケージ管理ツールとしてPoetryがありますが、Poetryを導入できない場合もあります。そこで本記事では、Python標準のパッケージ管理システムpipを使って、pyproject.toml
に記載されたPythonのサードパーティ製ライブラリをインストールする方法を解説します。
この記事が想定する読者
- pipコマンドが使用できる
pyproject.toml
を使用して、ライブラリ情報を管理・共有したい
この記事で述べないこと
pyproject.toml
の詳細な仕様
検証環境
- Python v3.11.6
- pip v24.0
- Windows 10 Home Ver. 22H2
パッケージのフォルダ構成
この記事では、開発するPythonパッケージが以下のフォルダ構成であるとします。
(root_directory)/
├── pyproject.toml
└── mypackage/
├── __init__.py
├── ...
└── mymodule.py
パッケージの一番上の階層にpyproject.toml
を置きます。また、パッケージのソースコードはmypackage/
フォルダ以下に置くものとします。
pyproject.tomlの記述例
pyproject.toml
の記述例を以下に示します。
|
|
[project]
テーブルのname
, version
には、開発するパッケージの名前とバージョン情報をそれぞれ記載します。pipでパッケージをインストールするにあたって、この2つは必須です。
さらに、dependencies
にパッケージの実行に必要なサードパーティ製ライブラリを記述します。ここでは、NumPyとScikit-learnを記載しています。バージョンを指定することも可能です。
また、[project.optional-dependencies]
テーブルには、パッケージの実行に必要でないサードパーティ製ライブラリを記述できます(もちろん省略可能です)。一般的にこのテーブルに記載するライブラリは、開発者のみ使用し、パッケージのユーザは使用しないライブラリとなります。
[project.optional-dependencies]
テーブルのライブラリは、dev
, test
など、任意の名前の複数のキーに分けて記述できます。1つのキーに記載されたライブラリは、まとめてインストール可能です。上記の例では、以下の意図で2つのキーに分けています。
dev
: 一般的な開発者が使用するライブラリtest
: テスト担当者のみ使用するライブラリ
ライブラリのインストール方法
最後に、pyproject.toml
からpipでライブラリをインストールする方法を述べます。Pythonの環境を汚したくない場合、必要に応じてvenvなどの仮想環境を作成して下さい。
まず、コマンドプロンプトまたはPowerShellを起動し、pyproject.toml
がある階層に移動します。
[project]
テーブルのdependencies
に記載されたライブラリをインストールする場合、以下のコマンドを実行します。
pip install .
最後の.
が必要なことに注意します。このコマンドを実行すると、pipがpyproject.toml
を自動的に探してライブラリをインストールしてくれます。
一方、[project.optional-dependencies]
テーブルに記載されたライブラリをインストールする場合、以下のようなコマンドを実行します。
pip install .[dev]
pip install .[test]
.
の後の角括弧の中にキーを指定します。