Python で仮想環境を使い始める
公開: 2022-11-07この記事では、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。 Pipenv
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
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 プロジェクトを開始するときは、依存関係の管理を改善するために必ず仮想環境を使用してください。 ハッピーコーディング!