Chapter 07

Pythonによるパッケージの管理方法【pip】

ますみ / 生成AIエンジニア
ますみ / 生成AIエンジニア
2024.12.21に更新

pipとは?

pipはPythonで使われるパッケージ管理システムです。pipを使ってPythonのライブラリやツールを簡単にインストール、管理できます。

pipと仮想環境(venv)

Pythonのプロジェクトにおいては、プロジェクトごとに異なるパッケージのバージョンを使うことがあります。pipと一緒に仮想環境(venv)を使うことで、プロジェクトごとに異なる依存関係を管理できます。ここでは、前の章(Pythonの実行方法 )と同様にプロジェクトフォルダ「myproject」を利用してpipの使い方を説明していきます。

pipの使い方

前準備として、前の章(Pythonの実行方法 )を参考にし、仮想環境をアクティベートしていきます。

1. 基本編

pipを使うことで、Pythonのパッケージを簡単にインストール、アップグレード、削除ができます。ここでは、基本的な操作を3つ紹介します。

パッケージのインストール

pip install パッケージ名

例えば、requests ライブラリをインストールしたい場合は、pip install requestsと入力します。実行した例は以下のようになります。

パッケージのリスト表示

pip list

これでインストールされているパッケージのリストを見ることができます。

先ほどインストールしたrequests ライブラリを確認できました。

パッケージのアンインストール

pip uninstall パッケージ名

2. 応用編(バージョン指定)

pipには、依存関係の解決や特定バージョンのインストールなど、高度な機能もあります。

特定バージョンのインストール
必要なバージョンを正確に指定できます。

pip install パッケージ名==バージョン

例えば、requests ライブラリの2.31.0をインストールしたい場合は、pip install requests==2.31.0と入力します。

3. 応用編(requirements.txt

requirements.txtは、Pythonプロジェクトで使用される外部ライブラリやパッケージの依存関係をリストアップしたテキストファイルです。このファイルでは、プロジェクトに合わせた特定のパッケージと、それらのバージョンを指定します。requirements.txtの使用により、開発者間の協力が容易になり、異なる環境でのプロジェクトのセットアップがスムーズになります。

requirements.txt の書き方

各行には、インストールするパッケージの名前と、オプションでバージョン指定を記載します。バージョンは、特定のバージョン、バージョン範囲、またはバージョン制約を示すことができます。

例として以下を作成しました。

requirements.txt

requests==2.25.1
flask>=1.1.2
numpy

この例では、requests パッケージのバージョン 2.25.1 を明確に要求し、flask はバージョン 1.1.2 以上である必要があり、numpy についてはどのバージョンでも受け入れられるとされています。

requirements.txt の使用方法:依存関係のインストール

requirements.txtにリストされた依存関係をインストールするには、以下のコマンドを使用します。

pip install -r requirements.txt

実行すると以下のようになります。

requirements.txt の使用方法:ファイルの生成

既存のプロジェクトからrequirements.txtを生成するには、以下のコマンドを使用できます。

pip freeze > requirements.txt

これにより、現在アクティブなPython環境にインストールされているすべてのパッケージとそのバージョンがrequirements.txtに書き出されます。もしrequirements.txtファイルがすでに存在している場合は、その内容を上書きします。

ただし、外部ライブラリやパッケージの管理が煩雑になるため、requrements.txtが膨大にならないように最低限を記入することをオススメします。

宣伝:もしもよかったらご覧ください^^

AIとコミュニケーションする技術(インプレス出版)』という書籍を出版しました🎉

これからの未来において「変わらない知識」を見極めて、生成AIの業界において、読まれ続ける「バイブル」となる本をまとめ上げました。

かなり自信のある一冊なため、もしもよろしければ、ご一読いただけますと幸いです^^