requirements.txt とは
一括インストールしたいPythonパッケージをまとめたリストのこと。
次のコマンドを実行することで、リストのパッケージを一括インストールできる。
pip install -r requirements.txt
主な用途は、ローカル環境で使用していたパッケージをリスト化して、本番環境に適用したり、Dockerコンテナ作成時にパッケージを自動インストールさせる際に使用する。
requirements.txt の書き方
基本的な書き方
基本的な書き方は簡単で、パッケージ名を一行ずつ記述するだけです。
requests
beautifulsoup4
selenium
pandas
numpy
あとはpip install -r requirements.txtコマンドを実行するれば、上記パッケージの最新バージョンがインストールされます。
バージョンを指定してインストールしたい場合
開発するアプリやシステムの都合で、パッケージのバージョンを指定してインストールしたい場合は、下記のようにパッケージ名 == インストールしたいバージョンというかたちで記述します。
requests == 4.0.0
beautifulsoup4 == 4.9.3
selenium == 3.141.0
pandas == 1.2.4
numpy == 1.20.2
その他のバージョン指定方法
あるバージョン以上のパッケージをインストールしたり、特定のバージョンを除いた上でインストールしたい場合などの書き方も用意されています。
以下はその書き方の例です。
keyring >= 4.1.1 # 4.1.1 以上のバージョンをインストールする
coverage != 3.5 # 3.5 以外のバージョンをインストールする
SomeProject >=1.2,<2.0 # 1.2以上かつ2.0未満のバージョンをインストールする
Mopidy-Dirble ~= 1.1 # バージョン1.1と互換性のあるバージョンをインストールする
Mopidy-Dirble ~= 1.1については、Mopidy-Dirble >= 1.1と書いても、Mopidy-Dirble == 1.*と書いても同じ意味となります。
まとめ
・最新版をインストールしたい場合はパッケージ名をそのまま記述する。
・明示的にバージョン指定をしたい場合は「==」を使う。
・ >, <, <=, >=などを使用すると大まかなバージョン指定ができる。
開発環境のパッケージを本番環境にもインストールしたい場合
ローカル環境のパッケージを本番環境でも使用したい場合、
以下のコマンドをローカル環境で実行すると、現在使用しているパッケージ情報をrequirements.txt に記述できます。
pip freeze > requirements.txt
pip freeze で記述したファイルは、次のコマンドで対象環境に一括インストールを行えます。
pip install -r requirements.txt
Dockerでrequirements.txtを使用する
Dockerでrequirements.txtを使用する場合は、Dockerfileとrequirements.txtを同じディレクトリに配置します。
Dockerfileについては、以下のように定義することでコンテナ作成時に自動でPythonパッケージのインストールを実施します。
「code」の部分は好きなディレクトリ名に書き換えて使用します。
FROM python:latest
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/