はじめに #
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 = "mypackage"
version = "0.1.0"
dependencies = [
"numpy==1.26.2",
"scikit-learn>=1.3.2",
]
[project.optional-dependencies]
dev = [
"ipython~=8.17.2",
"pylint",
]
test = [
"pytest==7.4.3",
"pytest-html==4.1.1",
]
[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]
.の後の角括弧の中にキーを指定します。