🙆

【Python入門】requirements.txt を作って依存関係をまとめてみた

に公開

はじめに

Python では、仮想環境(venv)を作ってその中に必要なパッケージをインストールすることで、環境を分離して開発できます。

ただし、新しく仮想環境を作成すると最初は空っぽなので、以前の環境で使っていたパッケージは含まれません。
そのため、大量のパッケージを使っているプロジェクトでは、毎回インストールし直すのは大変です。

そこで登場するのが requirements.txt です。
仮想環境内で使用したパッケージをこのファイルにまとめておくことで、別の環境でも一括で同じパッケージをインストールでき、再現性を確保できます。

この記事では、requirements.txt を使ったパッケージ管理の方法を、初心者にもわかりやすく手順で解説していきます。

きっかけ

ローカルマシン上で動作する CLI メッセージアプリを作成し、README に実行手順をまとめようとした際に気付いたことがきっかけです。

特に、アプリをサーバにアップロードして動かす場合を考えたとき、仮想環境をサーバ上で新たに作った後、どのように依存パッケージを再現するかが問題となりました。以下のアプリでは Faker しか使用していないのですが、複数のパッケージを使用している場合、複雑性が増します。

つまり、ローカル環境で確認した手順と同じ方法で、サーバ上でも仮想環境を作り、requirements.txt からパッケージをインストールすることで同じ環境を再現できる ことに気づいた、というわけです。

アプリケーションの詳細についてはこちらをご参照ください

https://qiita.com/mabo23/items/5dfb0ae6af6bbdaf3486

requirements.txt を用意する手順

以下は、サーバにアップする前にローカル環境で行なうことです。

1. 仮想環境を構築する(python3 -m venv venv

プロジェクトのルートディレクトリでコマンドを実行します。

2. 仮想環境を有効化(source venv/bin/activate

3. 必要なパッケージをインストールする

例えば、上記の CLI メッセージアプリでは、外部パッケージとして Faker を使用しています。

4. 仮想環境内でプログラムの動作確認を行なう

5. 使用したパッケージを requirements.txt に保存(pip freeze > requirements.txt

仮想環境内で使用したパッケージ情報を requirements.txt ファイルに保存します。
requirements.txt ファイルは必ず venv ディレクトリの外で作成してください。

>(アペンド)コマンドは「新規作成 or 上書き」なので、既存の内容は消えてしまうので、既存の内容を消したくない場合は注意しましょう。

6. requirements.txt に保存されていれば設定完了

実際に Faker パッケージをインストールしたときのファイルの中身
Faker==37.6.0
tzdata==2025.2

これで、依存関係を設定したファイルの準備は完了です。
あとは、実際に使用する環境で再現するために、以下の手順を実行します。

実行環境で行なうこと

1. プロジェクトをクローン

git clone <repository-url> 
cd project

2. 仮想環境を構築

python3 -m venv venv

3. 仮想環境を有効化

source venv/bin/activate  # Mac/Linux
または
venv\Scripts\activate # Windows

4. 依存関係をインストール

ここで設定ファイルから依存関係をインストール
pip install -r requirements.txt

これで、使用しているマシン上で同じ環境を再現できます。

5. 実行

まとめ

本記事では、Python の仮想環境と requirements.txt を使ったパッケージ管理の手順について解説しました。

わかったポイント

  • 仮想環境(venv)を使うことで、プロジェクトごとに依存関係を分離できる
  • 新しい仮想環境を作成すると最初は空なので、必要なパッケージは再インストールが必要
  • pip freeze > requirements.txt で使用パッケージを記録し、pip install -r requirements.txt で同じ環境を再現可能
  • この方法を使うことで、ローカル環境だけでなくサーバ上でも同じ環境を簡単に作ることができる

Python でプロジェクトを管理する際には気をつけていきたいです。

最後までお読みいただき、ありがとうございました。

Discussion