【Python】仮想環境の作成・入り方・抜け方などvenvの基本

how-to-enable-virtual-environment Python
この記事は約8分で読めます。
スポンサーリンク

本記事では、Pythonに標準搭載されているvenvモジュールを使用して、仮想環境に関する作成・入り方・抜け方などの基本的な使い方を解説します。仮想環境とは何であるかやそのメリット、そしてrequirements.txtなど実務での運用方法など、仮想環境に関して丁寧に説明します。

  • Pythonにおける仮想環境の概念やそのメリットはなにか
  • 仮想環境の作成・入り方・抜け方などの基本的な使い方を知りたい
本記事で実装する処理
仮想環境の有効化・アクティベーション

Pythonにおける仮想環境の作成・入り方・抜け方

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
仮想環境の抜け方

仮想環境を抜ける際に、exitコマンドを使用することも可能ですが、exitコマンドは、コマンドラインやターミナルウィンドウ自体を閉じるために使用されます。つまり、exitを実行すると、現在のセッションが完全に終了し、(仮想環境の有無を問わず) そのセッションに関連するすべてのターミナルやコマンドプロンプトウィンドウが終了します。

deactivateコマンドは仮想環境のみを抜け、通常のターミナルに復帰する動作となるため、セッションを継続したい場合はdeactivateを使用してください。

仮想環境を有効活用するためのヒント

仮想環境の場所
  • プロジェクトのルートディレクトリ内に仮想環境を作成すると、プロジェクトとその依存関係を一箇所に保持でき、管理が簡単になります。ただし、仮想環境のディレクトリは.gitignoreファイルに追加して、バージョン管理システムには含めないようにしましょう。(重くなってしまうため)
ルートへの仮想環境の配置
依存関係の管理
  • pip freeze > requirements.txtコマンドを使用して、アクティブな仮想環境にインストールされている全てのパッケージのバージョンをrequirements.txtファイルに出力することができます。これにより、他の開発者がプロジェクトに参加する際に、同じ依存関係を簡単に再現できます。読み込み時はpip install -r requirements.txtとして、一気にインストールできます。
pip freezeの操作
依存関係のインストール
環境変数の管理
  • 仮想環境内で環境変数を管理するために、.envファイルとpython-dotenvライブラリを使用することができます。これにより、開発環境や本番環境で使用される構成情報を簡単に管理できます。
import os

from dotenv import load_dotenv

load_dotenv()
print(os.environ.get("TEST"))
# 出力: This is environ
複数のPythonバージョンの管理
  • 特定のPythonバージョンで仮想環境を作成する必要がある場合は、pyenvcondaのようなツールを使用して複数のPythonバージョンを管理することができます。これらのツールは、プロジェクトに応じて異なるPythonバージョンを簡単に切り替えることを可能にします。
仮想環境有効化のワークフロー自動化
  • プロジェクトに特有の仮想環境を自動的にアクティベートするために、direnvのようなツールを使用することができます。これにより、プロジェクトディレクトリに移動すると自動的に仮想環境がアクティベートされ、プロジェクトから離れると自動的にデアクティベートされます。

おわりに

以上が、Pythonで仮想環境を作成・有効化 (activate) ・抜ける方法の解説となります。

ご質問やご不明点がある場合はお気軽にコメントお待ちしております。

ご精読いただきありがとうございました。

コメント

タイトルとURLをコピーしました