venvをインストールして、パッケージ管理をできるようにしよう

所要時間:20分

このレッスンでは、Pythonの仮想環境ツールである、venvのインストール方法について学びます。

venvとは

venvとは、Pythonの仮想環境の管理ツールです。

venvのメリット

venvを利用することで、特定のプロジェクトで本当に必要なライブラリだけを管理することができます。

普通にpipパッケージを利用する際には、グローバルインストールされます。

グローバルインストールとは、どのパッケージでもpipパッケージが利用できるようなインストール方法です。

しかし、例えば複数のプロジェクトで同じライブラリを利用する際、バージョン間で互換性のずれが生じてしまい、アプリAで利用していたパッケージをアプリBで使うと、エラーが起こってしまうといったことが起こってしまいます。

たとえば、とあるアプリAでは、

パッケージA:Ver3
パッケージB: Ver2

を利用していたとします。

一方で、アプリBを利用する際は、パッケージCがパッケージBのVer1を使わないと利用できない状態にあるとします。

パッケージB:Ver1 
パッケージC:Ver2(パッケージBのVersion1でないと動かない)

このような状況下で、アプリAとアプリBを開発している場合、パッケージのコンフリクトが起こってしまいます。

そこでvenvは、プロジェクトごとにpipパッケージをグローバルではなく、個別のプロジェクト単位で行えるようにすることができます。

なぜHeroku x Flaskで仮想環境システムを作成する必要があるのか

Flaskでは、最後にHerokuにデプロイしてWebサービスを動かす際、requirements.txtというファイルに、利用しているpipパッケージのリストを吐き出す必要があります。

Herokuでは、requreiemts.txtをもとに、本番環境を構築します。

もし仮想環境を利用していない場合、他のプロジェクトで利用しているpipパッケージをインストールしてしまう可能性があります。

そうすると、予期しないエラーが生じ、本番環境へデプロイできない可能性があるのです。

そのため、このレッスンではvenvという仮想環境システムを利用します。

venvのインストール方法

以下のコマンドを実行します。

python -m venv $仮想環境化したいディレクトリ名

今回の場合だと、environmentというディレクトリがプロジェクトになるので、以下のコマンドを実行します。

python -m venv ../environment #../で1つ↑の階層に移動する

こうすることで、environmentディレクトリの仮想化に成功します。

再度environmentディレクトリの中のファイルを確認します。

ls #ディレクトリの中身を見るコマンド

以下のコマンドを実行して、有効化します。

souce bin/activate

これで、仮想環境の準備が完了しました!