この記事では、Windows と Linux の両方のオペレーティング システムで Python の仮想環境を始める方法を学習します。
ローカル開発環境で複数のプロジェクトに取り組み始めると、依存関係の問題が頻繁に発生します。プロジェクトごとに仮想環境を作成すると、依存関係やプロジェクトの要件をより適切に管理できるようになります。
Python で仮想環境の利点を活用するには、仮想環境を作成してアクティブ化する方法を学びましょう。 👩🏽💻
仮想環境とは何ですか?
仮想環境は 、プロジェクトのコードと依存関係を含む分離された独立した環境です。
しかし、なぜ仮想環境を使用する必要があるのでしょうか?
そうですね、仮想環境を使用すると、さまざまなプロジェクトに同じライブラリの異なるバージョンをインストールして使用できます。仮想環境を使用すると、2 つ以上のプロジェクトが異なるバージョンを使用している場合でも、重大な変更が発生することがなくなります。これをさらに詳しく理解しましょう。
Python でのパッケージのインストール
Python 標準ライブラリには、単体テスト、オペレーティング システムとの対話、日付と時刻の操作などに役立ついくつかのモジュールが付属しています。
ただし、Python プロジェクトに取り組む場合は、Python コミュニティによって開発された他のパッケージをインストールする必要があることがよくあります。これは、データ収集のための Web スクレイピング、機械学習、Web アプリケーションなどのアプリケーションに特に当てはまります。
これらのパッケージをインストールして管理するには、 conda または pip を使用できます。
各プロジェクトには、インストールする必要がある特定のパッケージのセットが必要です。ただし、開発環境のすべてのパッケージをローカル マシンにインストールすると、すべてのプロジェクトがグローバルにインストールされたパッケージを共有します。
では、なぜこれが問題なのでしょうか?
開発環境には N 個のパッケージがあるかもしれません。ただし、現在取り組んでいるプロジェクトでは、そのうちの 3 つだけが必要な場合があります。すべてのプロジェクトが共通のインストールを共有する場合、どのプロジェクトがどのインストール済みパッケージを必要としたのか、つまり各プロジェクトに関連付けられた依存関係を特定することが非常に困難になります。
このアプローチには別の制限があります。プロジェクト ライブラリに Django 2.2 プロジェクトがあるとします。 Django 4 を使用するプロジェクトの作業を開始することにしました。そのため、同じ開発環境に最新バージョンの Django をインストールします。
既存のインストールはどうなりますか?
これは削除され、インストールしたバージョンの Django に置き換えられます。新しい安定リリースでは、特定の機能が非推奨になっている可能性があります。また、以前の Django プロジェクトは期待どおりに動作しない可能性があります。

これまでの議論をまとめると、プロジェクトの実行には独自のライブラリのセットが必要となるため、すべてのパッケージが共通の環境にインストールされている場合、依存関係の管理が困難になります。
仮想環境の仕組み
これまで、グローバル開発環境 (システム全体のインストール) にパッケージをインストールすることに関連する課題を見てきました。これは、仮想環境がこの制限にどのように対処するかを理解する動機になります。
Python プロジェクトの仮想環境を作成してアクティブ化する場合、現在のプロジェクトに 必要な パッケージ のみ をインストールできます。

Django プロジェクトの例をもう一度見てみると、仮想環境を使用すると、Django 2.2 プロジェクトと Django 4 プロジェクトの両方を競合することなく実行できます。これは、Django のインストールがシステム全体のインストールではなくなり、それぞれのプロジェクトの仮想環境に限定されるためです。
本質的に: 仮想環境は、プロジェクトのコードと依存関係の両方を含む 分離された 環境です。
仮想環境の利点

Python で仮想環境がどのように機能するかを学習したので、仮想環境を使用する利点を列挙してみましょう。
- 仮想環境は、個々のプロジェクトに 分離された開発環境 を提供し、特定のプロジェクトに必要なパッケージのみをインストールできるようにします。
- プロジェクトの仮想環境は独立して分離されているため、要件に応じて、異なるプロジェクトで 同じ ライブラリの 異なる バージョンを使用できます。仮想環境を使用すると、ライブラリのインストールや開発環境のセットアップのためのシステム権限を心配する必要がありません。
- 仮想環境にパッケージをインストールすると、 プロジェクトの依存関係をrequirements.txtファイルに取り込む ことができます。これにより、他の開発者はプロジェクトの開発と環境を複製し、単一のコマンドを使用して必要なパッケージをインストールできます。
仮想環境を作成するためのツール
ここまで、仮想環境がどのように機能するか、また仮想環境を使用する利点について学習しました。 Python で仮想環境を作成および管理するために使用できる人気のあるツールをいくつか見てみましょう。
#1.仮想環境
Virtualenv は
、Python プロジェクトの仮想環境を作成および管理するために広く使用されているツールの 1 つです。
virtualenv
の機能のサブセットは、
venv
パッケージで利用できます。ただし、
virtualenv
パッケージは
venv
と比較して高速で拡張可能です。
#2.ピペンブ
pipnev
を使用すると、
virtualenv
の仮想環境機能と
pip
のパッケージ管理機能の両方を利用できます。 pipfile を使用して、仮想環境内のプロジェクトの依存関係を管理します。
この
Pipenv プレイグラウンド
でブラウザから直接
pipenv
を試すことができます。
#3.コンダ
開発に Python の Anaconda ディストリビューション を使用する場合は、パッケージ管理と仮想環境の作成に conda を使用できます。
詳細については、 conda を使用した環境の管理 に関するこの包括的なガイドをご覧ください。
#4.詩
Poetry は、すべての Python プロジェクト間の依存関係を管理できるパッケージ管理ツールです。 Poetry の使用を開始するには、Python 3.7 以降のバージョンがインストールされている必要があります。
#5.ヴェンヴ
前述したように、 venv は virtualenv の機能のサブセットを提供しますが、Python 3.3 以降の Python 標準ライブラリに組み込まれているという利点があります。
これは、Python をインストールするとすぐに利用可能になり、外部パッケージをインストールする必要はありません。このチュートリアルではこれを使用して、仮想環境を作成し、操作します。 ✅
Ubuntu で Python 仮想環境を作成する方法
💬 このチュートリアルの残りの部分を進めるには、Python 3 をローカルにインストールする必要があります。Python 3.5 以降のバージョンを実行していることを確認してください。
このセクションでは、Ubuntu Linux マシンで仮想環境を作成およびアクティブ化する手順の概要を説明します。他の Linux ディストリビューションでも同じ手順を使用できます。
管理を容易にするために、プロジェクト ディレクトリを作成し、そこに
cd
ましょう。このディレクトリ内に
venv
を作成します。
$ mkdir my_project
$ cd my_project
Python プロジェクトの仮想環境を作成する一般的な構文は、
python3 -m venv <venv-name-or-path>
です。このコマンドを実行すると、
my_env
という仮想環境が現在の作業ディレクトリに作成されます。
$ python3 -m venv my_env
仮想環境内でパッケージをアクティブ化してインストールする方法
仮想環境を作成したら、それをアクティブ化し、必要なパッケージをそこにインストールできます。仮想環境をアクティブにするには、次のコマンドを実行します。
$ source my_env/bin/activate
仮想環境をアクティブ化したら、
pip list
コマンドを実行して、インストールされているパッケージのリストを取得できます。
$ pip list
これまでのところ、パッケージをインストールしていないため、作成された各仮想環境に、デフォルトでインストールされている
setuptools
と
pip
が表示されるはずです。
仮想環境内に
pip
をインストールすると、特定のプロジェクトに必要なパッケージをインストールできます。これが、プロジェクトごとに
独立した開発環境が
ある理由です。
仮想環境をアクティブ化したので、pip を使用してプロジェクト固有のパッケージを仮想環境にインストールできます。例として、最もダウンロードされている Python パッケージの 1 つである Python リクエスト をインストールしてみましょう。これは、Web API を操作するための HTTP リクエストを送信するためのいくつかの便利な機能を提供します。
$ pip install requests
リクエスト ライブラリをインストールすると、リクエスト ライブラリが、それに必要なすべてのパッケージとともにインストールされることがわかります。

$ pip list

次に示すように、
pip freeze
コマンドを使用して、出力をrequirements.txt ファイルにリダイレクトできます。
$ pip freeze > requirements.txt
現在のプロジェクト ディレクトリの内容を調べると、requirements.txt ファイルが作成されていることがわかります。
$ ls
# my_env requirements.txt
プロジェクトで作業した後、次のコマンドを実行して仮想環境を非アクティブ化できます。
$ deactivate
Windows で Python 仮想環境を作成する方法
一般に、開発には Linux 環境が推奨されます。 Windows マシンを使用している場合は、 Windows Subsystem for Linux (WSL) を使用して、ローカル開発用の Ubuntu ターミナル環境をセットアップすることを検討できます。
Windows マシンを使用している場合は、Windows PowerShell またはコマンド プロンプトを使用し、次のコマンドを使用して仮想環境を作成できます。
> python -m venv <path-to-venv>
仮想環境をアクティブ化する方法
Windows マシン上での仮想環境のアクティブ化は、コマンド プロンプトと Windows PowerShell のどちらで作業しているかによって異なります。
コマンド プロンプトを使用している場合は、次のコマンドを実行して仮想環境をアクティブ化します。
> <path-to-venv>\Scripts\activate.bat
あるいは、Windows PowerShell を使用している場合は、次のコマンドを実行すると仮想環境がアクティブになります。
> <path-to-venv>\Scripts\Activate.ps1
必要なパッケージをすべて仮想環境内にインストールできます。
仮想環境を非アクティブ化するには、コマンド プロンプトと Windows PowerShell の両方で
deactivate
コマンドを実行できます。
結論
この記事では、システム全体のインストールの制限と、それによって Python プロジェクト全体の依存関係の管理がどのように困難になるかについて説明しました。 Python の 仮想環境は、 個々のプロジェクトに分離された開発環境を提供しながら、依存関係をより適切に管理する方法を提供します。
Python で仮想環境を作成および管理するために広く使用されているツールのうち、仮想環境を作成およびアクティブ化するために Python 標準ライブラリに組み込まれている venv の使用方法を学習しました。
プロジェクト専用の仮想環境内に、プロジェクトに固有のバージョンのライブラリをインストールできます。これらの要件は、requirements.txt ファイルに取り込むことができるため、他の開発者はプロジェクト環境を簡単に複製できます。
次の Python プロジェクトを開始するときは、依存関係の管理を改善するために必ず仮想環境を使用してください。コーディングを楽しんでください!🎉