venvの基本|Python標準パッケージの実例を徹底紹介

※本サイトにはプロモーション・広告が含まれています。

(最終更新日:2023年9月)

✔このような方へ向けて書かれた記事となります

「venvの使い方がよく分からない」
「venvを活用した環境構築の方法を知りたい」
「venvで仮想環境を作る具体的な手順が見たい」

✔当記事を通じてお伝えすること

  • venvの基本的な概念
  • venvを用いた環境構築の方法とその応用
  • venvを使った仮想環境の実例

当記事では、venvの基本や仮想環境の構築法だけでなく、応用的な使い方についても具体的な事例を交えて詳細に解説しています。

ぜひ最後までお読みいただき、venvの活用法をマスターしましょう。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

venvの基本概念

こちらでは、「venvの基本的な概念」について解説します。

  • venvとは何か
  • 仮想環境のしくみ
  • 他の仮想環境管理ツールとvenvの違い

venvとは何か

venvは、Python 3.3から標準ライブラリに追加された仮想環境を作成するモジュールです。

venvを用いると、それぞれのプロジェクトごとに隔離されたPython環境を作成できます。

この隔離された環境では、特定のプロジェクトのためにパッケージをインストール・アンインストールしたり、Pythonのバージョンを切り替えたりが可能です。

仮想環境のしくみ

venvを用いて作成された仮想環境は、専用のディレクトリに格納されます。

このディレクトリ内にはPythonインタープリタや標準ライブラリ、各種パッケージが含まれます。

これにより、仮想環境はシステム全体のPython環境とは独立に動作し、自身のディレクトリ内のリソースのみを使用します。

異なる仮想環境間でパッケージやPythonのバージョンが干渉することはありません。

他の仮想環境管理ツールとvenvの違い

Pythonではvenv以外にも、仮想環境を管理するためのツールがあります。

例えば、virtualenvcondaなどです。

これらのツールとvenvとの大きな違いは、venvがPythonの標準ライブラリとして提供されている点です。

これにより、Pythonがインストールされていれば追加のインストールなしに仮想環境を作成できます。

また、venvはPythonのバージョンごとに隔離された環境を提供することに焦点を当てています。

venvのインストールと環境構築

こちらでは、venvのインストールと環境構築の方法について詳しく解説します。

  • venvのインストール方法
  • 新しい仮想環境の作成

venvのインストール方法

venvはPython 3.3以降であれば、特別なインストールは必要ありません。

Pythonがインストールされていればvenvを使用することが可能です。

もしPythonがまだインストールされていない場合は、公式のPythonウェブサイトからダウンロードしてインストールしてください。

新しい仮想環境の作成

新しい仮想環境を作成するには、以下のコマンドを使用します。

python3 -m venv myenv

このコマンドを実行すると、カレントディレクトリにmyenvという名前の新しい仮想環境が作成されます。

myenvの部分は任意の名前に変更可能で、これが仮想環境の名前となります。

特定のプロジェクトに対応するような名前を付けると、後でどのプロジェクトのための環境であるかがわかりやすくなります。

venvの活用方法

次に、「venvの具体的な活用方法」について詳しくご紹介します。

  • 仮想環境の有効化
  • Pythonの実行・バージョン確認
  • パッケージのインストールと管理
  • 仮想環境内のパッケージ確認
  • 仮想環境の無効化

仮想環境の有効化

新しく作成した仮想環境を使用するためには、まずその環境を有効化する必要があります。

有効化すると、そのシェルのセッション内でPythonやpipを実行した際に、仮想環境内のPythonインタープリタやパッケージが利用されるようになります。

  • Linux/Mac
  • Windows

Linux/Mac

LinuxやMacの場合、以下のコマンドで仮想環境を有効化します。

source myenv/bin/activate

Windows

Windowsの場合、次のコマンドで仮想環境を有効化します。

myenv\Scripts\activate

Pythonの実行・バージョン確認

仮想環境を有効化した状態でPythonを実行すると、その仮想環境に対応するPythonインタープリタが起動します。

同様に、Pythonのバージョンを確認するには、python --versionを実行しましょう。

パッケージのインストールと管理

パッケージのインストールはpipを用いておこないます。

例えば、numpyをインストールするには以下のコマンドです。

pip install numpy

このとき、仮想環境を有効化していると、インストールしたパッケージはその仮想環境内に格納されます。

また、pip uninstall numpyでパッケージをアンインストールすることも可能です。

仮想環境内のパッケージ確認

仮想環境内でインストールされているパッケージの一覧を確認するにはpip listコマンドを使用します。

現在の仮想環境で利用できるパッケージとそのバージョンを一覧で確認できます。

仮想環境の無効化

仮想環境の作業が終わったら、その環境を無効化(ディアクティベート)することが推奨されます。

これにより、システム全体のPython環境に戻ります。

無効化はdeactivateコマンドを実行してください。。

venvを利用したプロジェクト管理

こちらでは、「venvを使ったプロジェクト管理」の方法を詳しく説明します。

  • 複数プロジェクト間での仮想環境の切り替え
  • プロジェクトごとのパッケージ管理方法
  • 仮想環境内でのPythonスクリプト実行

複数プロジェクト間での仮想環境の切り替え

複数のプロジェクトを管理する際は、それぞれのプロジェクトに対応する仮想環境を作成し、それぞれを切り替えて使用します。

前述のとおり、仮想環境の有効化と無効化をおこなえば、異なる仮想環境間を簡単に切り替えることが可能です。

プロジェクトごとのパッケージ管理方法

各プロジェクトでは、そのプロジェクトで必要なパッケージのみをインストールします。

プロジェクトごとに必要なパッケージを独立に管理できるからです。

また、requirements.txtファイルを作成し、その中にインストールするパッケージの一覧を記載しておくと、後から同じ環境を再現する際に便利です。

仮想環境内でのPythonスクリプト実行

仮想環境を有効化した状態でPythonスクリプトを実行すると、そのスクリプトは仮想環境内のPythonインタープリタとパッケージを用いて実行されます。

スクリプトの実行結果は、仮想環境に依存するのです。

異なるプロジェクトで異なるパッケージやバージョンを利用したスクリプトの実行が可能となります。

venv上級テクニック

次に、「venvの上級者向けテクニック」をご紹介します。

  • EnvBuilderを拡張する例
  • 仮想環境のカスタマイズ
  • 仮想環境のコピー・複製
  • 仮想環境パスの変更
  • 仮想環境の削除方法

EnvBuilderを拡張する例

venvにはEnvBuilderというクラスが存在します。

これを継承して新たな仮想環境作成クラスを定義すると、仮想環境の作成過程をカスタマイズが可能です。

例えば、新たな仮想環境を作成した際に自動的に特定のパッケージをインストールするような動作を追加できます。

import venv

class CustomEnvBuilder(venv.EnvBuilder):
    def post_setup(self, context):
        """
        仮想環境のセットアップ後に実行されるメソッド。
        ここで特定のパッケージをインストールする。
        """
        self.install_packages(context)

    def install_packages(self, context):
        """
        pipを使用して特定のパッケージをインストールする。
        """
        # 仮想環境内のpipを使ってパッケージをインストール
        pip_exe = context.env_exe
        self.run_subprocess([pip_exe, 'install', 'requests', 'flask'])

# このカスタムクラスを使用して新しい仮想環境を作成
builder = CustomEnvBuilder(with_pip=True)
builder.create('path_to_new_venv')

仮想環境のカスタマイズ

仮想環境は基本的に、その作成時に設定された状態がそのまま保持されます。

ただし必要に応じて、手動でカスタマイズも可能です。

例えば、特定のパッケージをグローバルインストールするような設定を加えたり、Pythonインタープリタのバージョンを変更したりできます。

仮想環境のコピー・複製

異なる環境で同じ設定の仮想環境を作成するには、requirements.txtを用いる方法がおすすめです。

仮想環境をコピーする方法だと、実行環境やPythonのバージョンに依存してしまいます。

コピー・複製でひとまずは作れるものの、ひと手間かけてもrequirements.txtの再インストールを優先しましょう。

仮想環境パスの変更

プロジェクトの構成変更等でパスを変更する場合は、既存の仮想環境を削除して新たに作成し直すことになります。

なぜならvenvでは、仮想環境のパスは作成時に指定したパスに固定されるからです。

仮想環境の削除方法

venvで作成した仮想環境の削除は、その仮想環境のディレクトリをファイルシステムから直接削除することで実現します。

ただし、ほかのプロジェクトで誤って同じ仮想環境を使用しないように、仮想環境の削除は慎重におこないましょう。

まとめ

venvを使用する最大のメリットは、環境ごとにPythonのバージョンやパッケージを管理できること。

これにより、プロジェクトごとに必要な環境を精緻に制御可能です。

venvはPythonに標準で含まれているので、追加のインストールや学習が不要であり、これも大きな利点といえるでしょう。

ぜひ仮想環境をうまく活用し、開発効率を上げ、よりコーディングに集中できる環境を作ってください。

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