requirements.txt
requirements.txt
はPythonの公式でサポートされているファイル形式であり、デファクトスタンダードでもあります。
歴史的経緯
初期のPythonパッケージ管理
初期のPythonプロジェクトでは、パッケージの依存関係を手動で管理していました。
その後、
distutilsというツールが標準ライブラリに追加され、パッケージのビルドと配布が容易になりましたが、依存関係管理は依然として手動でした。
setuptoolsとeasy_install
setuptools
とその関連ツールである easy_install
が登場し、依存関係管理が改善されました。
pipの登場
2008年、 pip
が登場し、パッケージ管理がさらに簡単になりました。
pip
はパッケージのインストール、アンインストール、アップグレード、依存関係管理などをサポートしています。
requirements.txtの普及
pip
はプロジェクトの依存関係をファイルにリスト化し、それをもとにインストールする機能を持っており、そのファイルが requirements.txt
です。
requirements.txt
はシンプルでわかりやすく、多くのプロジェクトで利用されるようになり、デファクトスタンダードとなりました。
他の方法
setup.pyとinstall_requires
プロジェクトのメタデータや依存関係を記述するために使われます。
setup.py from setuptools import setup
setup(
name='my_project',
version='0.1',
install_requires=[
'requests',
'numpy',
],
)
PipfileとPipenv
Pipfile
は、より洗練された依存関係管理と仮想環境の統合を提供します。
Pipfile.lock
ファイルは、依存関係の正確なバージョンを記録します。
toml[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
[packages]
requests = "*"
numpy = "*"
[dev-packages]
pytest = "*"
Poetryは、依存関係の管理、ビルド、発行を一元管理するツールです。
pyproject.toml[tool.poetry]
name = "my_project"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
python = "^3.8"
requests = "^2.25.1"
numpy = "^1.19.5"
[tool.poetry.dev-dependencies]
pytest = "^6.2.2"
```