Pythonでrequirements.txtを使用して依存ライブラリを一括でインストールする

Idea
この記事はこんな人にオススメ
  • Pythonに興味のある人
  • Pythonでの依存ライブラリの管理に興味のある人
  • requirements.txtを使用して一括で依存ライブラリをインストールしたい人

どうも、Shinyaです。

この記事では、Pythonrequirements.txtを使用して依存ライブラリを一括でインストールする方法について書いていきます。

Pythonでは、依存ライブラリをインストールする際には、基本的に次のようにpipコマンドを実行します。

pip3 install requests

たしかに、上記のコマンドでも依存ライブラリのインストールは可能ですが、使用する依存ライブラリが5個や10個などに増えた場合には個々の依存ライブラリに対してインストールコマンドを実行するのは非常に手間です。

また、自分以外の開発者にプロジェクトのセットアップをしてもらう際にも、開発者に対してREADME等のドキュメントで特定のバージョンのライブラリを使用するように注意書きをすることはできますが、それを読んだ開発者が正しく内容を理解して実行できるかは完全に運頼みで、想定した依存ライブラリを正しくインストールできずに開発を開始できない可能性が高くなります

こうした厄介な問題をrequirements.txtがスマートに解決してくれます。requirements.txtを使用すると、プロジェクトのセットアップに必要な依存ライブラリとバージョンを一度だけ設定さえすれば、誰でもコマンド一つでPythonプロジェクトのセットアップを完了させることができるようになります。

requirements.txtをPythonプロジェクトに作成

それでは、早速requirements.txtをPythonプロジェクトに作成します。requirements.txtは任意のディレクトリに作成することが可能ですが、基本的には次のようにPythonプロジェクトのルートディレクトリに作成すれば大丈夫です。

.
├── main.py
└── requirements.txt

補足しておくと、「requirements.txt」というファイル名は慣習的な名称であり、多くのPythonプロジェクトでこの名称が使用されていることからPythonコミュニティでの事実上の標準となっています。任意の名称を使用することも可能ですが推奨されていません。

requirements.txtに依存ライブラリの情報を定義

次に、requirements.txtにPythonプロジェクトのセットアップに必要な依存ライブラリの情報を定義していきます。

次のような形式で作成します。

# バージョン指定なし(常に最新版を使用)
yfinance

# バージョン指定あり
requests == 2.32.5              # 常に2.32.5を使用する
beautifulsoup4 >= 4.14.3        # 4.14.3以上を使用する

上記はあくまでも例ですが、バージョン指定をしない場合と、バージョンを指定する場合で使い分けることができ柔軟な定義が可能です。Pythonプログラムと同様にコメントも使用することができます。

また、上記の例だとバージョン指定をする際に「==」と「>=」のみを使用していますが、その他にも次のような高度な操作がサポートされていますので、気になる方は公式ドキュメントを参考にしてください。

SomeProject
SomeProject == 1.3
SomeProject >=1.2,<2.0
SomeProject[foo, bar]
SomeProject~=1.4.2

requirements.txtを使用して依存ライブラリを一括インストール

ここまでの工程でrequirements.txtの準備ができたら、あとは次のコマンドを実行するだけです。コマンド実行時のカレントディレクトリからrequirements.txtへの相対パスまたは絶対パスを指定してください。

pip3 install -r ./requirements.txt

上記のコマンドを実行すると、次の例のようにrequirements.txtに定義した依存関係が一括でインストールされることを確認できます。また、既にインストール済みのライブラリについてはスキップされます。

Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: yfinance in /user/Library/Python/3.9/lib/python/site-packages (from -r ./requirements.txt (line 2)) (0.2.66)
Requirement already satisfied: requests==2.32.5 in /user/Library/Python/3.9/lib/python/site-packages (from -r ./requirements.txt (line 5)) (2.32.5)
Collecting beautifulsoup4>=4.14.3 (from -r ./requirements.txt (line 6))
  Using cached beautifulsoup4-4.14.3-py3-none-any.whl.metadata (3.8 kB)
Requirement already satisfied: charset_normalizer<4,>=2 in /user/Library/Python/3.9/lib/python/site-packages (from requests==2.32.5->-r ./requirements.txt (line 5)) (3.4.3)
Requirement already satisfied: idna<4,>=2.5 in /user/Library/Python/3.9/lib/python/site-packages (from requests==2.32.5->-r ./requirements.txt (line 5)) (3.10)
Requirement already satisfied: urllib3<3,>=1.21.1 in /user/Library/Python/3.9/lib/python/site-packages (from requests==2.32.5->-r ./requirements.txt (line 5)) (1.26.20)
Requirement already satisfied: certifi>=2017.4.17 in /user/Library/Python/3.9/lib/python/site-packages (from requests==2.32.5->-r ./requirements.txt (line 5)) (2025.8.3)
Requirement already satisfied: pandas>=1.3.0 in /user/Library/Python/3.9/lib/python/site-packages (from yfinance->-r ./requirements.txt (line 2)) (2.1.4)
Requirement already satisfied: numpy>=1.16.5 in /user/Library/Python/3.9/lib/python/site-packages (from yfinance->-r ./requirements.txt (line 2)) (1.26.4)
Requirement already satisfied: multitasking>=0.0.7 in /user/Library/Python/3.9/lib/python/site-packages (from yfinance->-r ./requirements.txt (line 2)) (0.0.12)
Requirement already satisfied: platformdirs>=2.0.0 in /user/Library/Python/3.9/lib/python/site-packages (from yfinance->-r ./requirements.txt (line 2)) (4.4.0)
Requirement already satisfied: pytz>=2022.5 in /user/Library/Python/3.9/lib/python/site-packages (from yfinance->-r ./requirements.txt (line 2)) (2025.2)
Requirement already satisfied: frozendict>=2.3.4 in /user/Library/Python/3.9/lib/python/site-packages (from yfinance->-r ./requirements.txt (line 2)) (2.4.6)
Requirement already satisfied: peewee>=3.16.2 in /user/Library/Python/3.9/lib/python/site-packages (from yfinance->-r ./requirements.txt (line 2)) (3.18.2)
Requirement already satisfied: curl_cffi>=0.7 in /user/Library/Python/3.9/lib/python/site-packages (from yfinance->-r ./requirements.txt (line 2)) (0.13.0)
Requirement already satisfied: protobuf>=3.19.0 in /user/Library/Python/3.9/lib/python/site-packages (from yfinance->-r ./requirements.txt (line 2)) (6.32.1)
Requirement already satisfied: websockets>=13.0 in /user/Library/Python/3.9/lib/python/site-packages (from yfinance->-r ./requirements.txt (line 2)) (15.0.1)
Requirement already satisfied: soupsieve>=1.6.1 in /user/Library/Python/3.9/lib/python/site-packages (from beautifulsoup4>=4.14.3->-r ./requirements.txt (line 6)) (2.8)
Requirement already satisfied: typing-extensions>=4.0.0 in /user/Library/Python/3.9/lib/python/site-packages (from beautifulsoup4>=4.14.3->-r ./requirements.txt (line 6)) (4.15.0)
Requirement already satisfied: cffi>=1.12.0 in /user/Library/Python/3.9/lib/python/site-packages (from curl_cffi>=0.7->yfinance->-r ./requirements.txt (line 2)) (2.0.0)
Requirement already satisfied: pycparser in /user/Library/Python/3.9/lib/python/site-packages (from cffi>=1.12.0->curl_cffi>=0.7->yfinance->-r ./requirements.txt (line 2)) (2.23)
Requirement already satisfied: python-dateutil>=2.8.2 in /user/Library/Python/3.9/lib/python/site-packages (from pandas>=1.3.0->yfinance->-r ./requirements.txt (line 2)) (2.9.0.post0)
Requirement already satisfied: tzdata>=2022.1 in /user/Library/Python/3.9/lib/python/site-packages (from pandas>=1.3.0->yfinance->-r ./requirements.txt (line 2)) (2025.2)
Requirement already satisfied: six>=1.5 in /Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/site-packages (from python-dateutil>=2.8.2->pandas>=1.3.0->yfinance->-r ./requirements.txt (line 2)) (1.15.0)
Using cached beautifulsoup4-4.14.3-py3-none-any.whl (107 kB)
Installing collected packages: beautifulsoup4
  Attempting uninstall: beautifulsoup4
    Found existing installation: beautifulsoup4 4.14.2
    Uninstalling beautifulsoup4-4.14.2:
      Successfully uninstalled beautifulsoup4-4.14.2
Successfully installed beautifulsoup4-4.14.3
Shinya

フリーランス。プログラマー歴10年以上。Amazoned Programmer (Amazonの企業文化に感銘を受けたプログラマー)。

仕事ではJavaとSQLとかを主に使ってアプリケーションを開発しています。BIツールを使用したビッグデータの可視化や解析から、AWSなどのクラウド技術の活用に興味があり、日々研究と研鑽を重ねています。このブログでは日々の学習のアウトプットを投稿していこうと思います。

暇な時にDart/Flutterのパッケージ開発やアプリ開発なども行なっており、OSSのatproto.dartを開発してたりします。

Shinyaをフォローする
IdeapipProgrammingPythonTech
Shinyaをフォローする
タイトルとURLをコピーしました