本記事では、Pythonに標準搭載されているvenv
モジュールを使用して、仮想環境に関する作成・入り方・抜け方などの基本的な使い方を解説します。仮想環境とは何であるかやそのメリット、そしてrequirements.txtなど実務での運用方法など、仮想環境に関して丁寧に説明します。
- Pythonにおける仮想環境の概念やそのメリットはなにか
- 仮想環境の作成・入り方・抜け方などの基本的な使い方を知りたい
Pythonにおける仮想環境の作成・入り方・抜け方
- 仮想環境の入り方・作成方法
- Windowsの場合:
python -m venv [仮想環境名]
- macOSやLinuxの場合:
python3 -m venv [仮想環境名]
- Windowsの場合:
- 仮想環境の有効化 (activate)
- Windowsの場合:
[仮想環境名]\Scripts\activate
- macOSやLinuxの場合:
source [仮想環境名]/bin/activate
- Windowsの場合:
- 仮想環境の抜け方・無効化
deactivate
Pythonにおける仮想環境・仮想化とは
Pythonにおける仮想環境(virtual environment)は、Pythonのプロジェクトごとに独立した実行環境を提供するシステムです。これは、特定のプロジェクトの依存関係やバージョンなどを他のプロジェクトやシステム全体と分離して管理するために使用されます。
よりイメージを持っていただけるようにここでは「道具箱」に例えて表現してみます。上記の説明で理解できた方は読み飛ばしてしまって大丈夫です。
前提から説明すると、Pythonでプログラムを作る時、いろいろな「道具」が必要になります。これらの「道具」はライブラリやパッケージと呼ばれるもので、特定の機能を簡単に使えるようにしてくれます。例えば、写真を加工する機能 (Pillow
) やインターネット上の情報を取得する機能 (requests
) などです。
しかし、異なるプロジェクトで同じ「道具」でも、異なるバージョンを使いたいことがあり、全部のプロジェクトで同じ「道具箱」を使っていると、バージョンが衝突してしまうことがあります。Pythonの「仮想環境」とは、プロジェクトごとに別々の「道具箱」を作ることができる機能です。これにより、一つのプロジェクトで特定のバージョンの「道具」を使っても、他のプロジェクトには影響しないようになります。この際に、「仮想化」を通じて同じPC内に別々の「道具箱」を作成し、その道具箱の中に別々の「道具」を入れて管理することができるようになります。
本記事では、この「道具箱」の作り方、入り方 (どの道具箱を使うか指定する方法)、そして、その道具箱の使用をやめ仮想環境からの抜け方をご紹介していきます。
仮想環境を使用するメリット
仮想環境を使用することのメリットは多岐にわたりますが、主に以下の点に集約されます。
依存関係の管理
プロジェクト固有の依存関係をプロジェクトフォルダ内に保持することで、異なるプロジェクト間での依存関係の衝突を避けることができます。これにより、一つのプロジェクトでライブラリの特定のバージョンが必要な場合でも、他のプロジェクトに影響を与えることなく、そのバージョンを使用することができます。
「道具箱」の例えに即すると、異なるプロジェクトで異なるバージョンの「道具」を自由に使え、他の道具箱にある道具から影響を受けることが防げます。
開発環境の統一・再現性
チーム内の全ての開発者が同じ環境(Pythonのバージョンやライブラリのバージョンなど)で作業できるようになります。これにより、”私のマシンでは動くけど、あなたのマシンでは動かない”という問題を避けることができます。
同時に、プロジェクトの依存関係を簡単に他のマシンにコピーして、同じ環境を再現することができます。これは、新しい開発者がプロジェクトに参加する際や、本番環境にデプロイする際に特に便利です。
「道具箱」の仮想環境として、そのプロジェクト専用の「道具箱」ができるので、プロジェクトごとに必要な「道具」のリストを簡単に他の人と共有できます。新しいコンピュータで作業を始める時も、同じ「道具箱」をすぐに用意できます。
システムの清潔さ
システム全体のPython環境に影響を与えることなく、プロジェクト固有のパッケージをインストールできます。これにより、システム全体を清潔に保ち、パッケージの管理を簡素化します。
つまり、仮想環境を使うと、プロジェクトに必要な「道具」だけをインストールするので、使わない「道具」でコンピュータがいっぱいになったり、システム全体が影響を受けたりすることはありません。
仮想環境の基本的な概念や、メリットがよく理解できたかと思いますので、次にPythonにおける仮想環境の作成方法や入り方、抜け方など、実務上での使い方をご紹介します。
仮想環境の作り方・作成方法
Pythonでは標準搭載されているvenvを使用して簡単に仮想環境を作成・構築することができます。仮想環境を作成したいディレクトリに移動し、下記のコマンドを実行してください。
なお、[仮想環境名]はmyvenv
など、任意の名前に設定することができます。
- Windowsの場合:
python -m venv [仮想環境名]
- macOSやLinuxの場合:
python3 -m venv [仮想環境名]
これにより、仮想環境が作成され、[仮想環境名]として設定した環境を有効化 (activate) することで、ライブラリのインストールや削除など、依存関係が個別のプロジェクト内で管理できるようになります。
仮想環境を有効化する (activate)
先の動作で作成した仮想環境には、有効化 (activate) のためのスクリプトが既に用意されているため、コマンドラインやシェルから実行することで仮想環境の有効化 (アクティベーション) ができます。それぞれ下記のコマンドを実行してください。
また、有効化した状態でpip install XXX
などを実行することで現在の仮想環境上でライブラリ・パッケージのインストールが行えます。
- Windowsの場合:
[仮想環境名]\Scripts\activate
- macOSやLinuxの場合:
source [仮想環境名]/bin/activate
これにより、ファイルパスの先頭部分に現在の仮想環境 (下画像の緑色の文字の部分) が表示され、仮想環境が有効化 (アクティベート) されたことがわかります。
この状態でpip install XXX
などを実行することで現在の仮想環境上でライブラリのインストールや削除、実行ができるようになります。
仮想環境の抜け方 (ディアクティベート)
このようにした仮想環境を抜けたい場合は、以下のコマンドを実行して仮想環境をデアクティベート(無効化)し、システムでグローバルなPython環境に戻ることができます。
deactivate
仮想環境を有効活用するためのヒント
仮想環境の場所
- プロジェクトのルートディレクトリ内に仮想環境を作成すると、プロジェクトとその依存関係を一箇所に保持でき、管理が簡単になります。ただし、仮想環境のディレクトリは
.gitignore
ファイルに追加して、バージョン管理システムには含めないようにしましょう。(重くなってしまうため)
依存関係の管理
pip freeze > requirements.txt
コマンドを使用して、アクティブな仮想環境にインストールされている全てのパッケージのバージョンをrequirements.txt
ファイルに出力することができます。これにより、他の開発者がプロジェクトに参加する際に、同じ依存関係を簡単に再現できます。読み込み時はpip install -r requirements.txt
として、一気にインストールできます。
環境変数の管理
- 仮想環境内で環境変数を管理するために、
.env
ファイルとpython-dotenv
ライブラリを使用することができます。これにより、開発環境や本番環境で使用される構成情報を簡単に管理できます。
import os
from dotenv import load_dotenv
load_dotenv()
print(os.environ.get("TEST"))
# 出力: This is environ
複数のPythonバージョンの管理
- 特定のPythonバージョンで仮想環境を作成する必要がある場合は、
pyenv
やconda
のようなツールを使用して複数のPythonバージョンを管理することができます。これらのツールは、プロジェクトに応じて異なるPythonバージョンを簡単に切り替えることを可能にします。
仮想環境有効化のワークフロー自動化
- プロジェクトに特有の仮想環境を自動的にアクティベートするために、
direnv
のようなツールを使用することができます。これにより、プロジェクトディレクトリに移動すると自動的に仮想環境がアクティベートされ、プロジェクトから離れると自動的にデアクティベートされます。
おわりに
以上が、Pythonで仮想環境を作成・有効化 (activate) ・抜ける方法の解説となります。
ご質問やご不明点がある場合はお気軽にコメントお待ちしております。
ご精読いただきありがとうございました。
コメント