Virtualenvとvenv:Python仮想環境の説明

Pythonが開発者に人気があるすべての理由の中で、最大の理由の1つは、サードパーティパッケージの幅広い選択肢と拡大し続ける選択肢です。摂取と高速数学や機械学習にデータをフォーマットからのすべてのための便利なツールキットがちょうどあるimportか、pip install離れて。

しかし、これらのパッケージが互いにうまく機能しない場合はどうなりますか?異なるPythonプロジェクトで、同じアドオンの競合バージョンまたは互換性のないバージョンが必要な場合はどうしますか?そこで、Python仮想環境が活躍します。

ツールは異なりますが、Python2とPython3の両方で仮想環境を作成して操作できます。VirtualenvはPython2に最適なツールですが、venvはPython3でタスクを処理します。 

Python仮想環境とは何ですか?

仮想環境は、Pythonインタープリターの複数の並列インスタンスを作成する方法であり、それぞれに異なるパッケージセットと異なる構成があります。各仮想環境には、サポートユーティリティのコピーを含むPythonインタープリターの個別のコピーが含まれています。

各仮想環境にインストールされたパッケージは、その仮想環境でのみ表示され、他の仮想環境では表示されません。プラットフォームに依存するバイナリを含む大規模で複雑なパッケージでさえ、仮想環境で相互に囲い込むことができます。

仮想環境の一般的な使用例はいくつかあります。

  1. 同じパッケージの異なるバージョンに依存する複数のプロジェクトを開発している、または名前空間の衝突のために特定のパッケージから分離する必要があるプロジェクトがあります。これは最も標準的なユースケースです。
  2. site-packagesディレクトリを変更できないPython環境で作業しています。これは、マネージドホスティングなどの高度に制御された環境で作業している場合や、本番環境の要件のためにインタープリター(またはそこで使用されるパッケージ)の選択を変更できないサーバーで作業していることが原因である可能性があります。
  3. 相互互換性や下位互換性をテストするなど、高度に制御された状況でパッケージの特定の組み合わせを試してみたいと考えています。
  4. サードパーティパッケージのないシステムでPythonインタープリターの「ベースライン」バージョンを実行し、必要に応じて個々のプロジェクトごとにのみサードパーティパッケージをインストールする必要があります。

Pythonライブラリをプロジェクトのサブフォルダに単純に解凍してそのように使用することはできないとは言えません。同様に、Pythonインタープリターのスタンドアロンコピーをダウンロードしてフォルダーに解凍し、それを使用して専用のスクリプトとパッケージを実行できます。

しかし、そのような石畳のプロジェクトを管理することはすぐに困難になります。唯一のようだ最初でそれを行うことが容易。バイナリコンポーネントを持つパッケージ、または複雑なサードパーティの依存関係に依存するパッケージを操作することは、悪夢になる可能性があります。最良の長期的な解決策は、仮想環境を作成して操作するためにPythonのネイティブメカニズムを使用することです。

Python3の仮想環境

Virtualenvは、無数のPython開発者にとって不可欠であることが証明されていますが、Pythonの標準ライブラリの一部ではありません。Python 3には、プロセス全体を非常に簡単にする仮想環境用のネイティブツールがあります。

関連ビデオ:Pythonがプログラミングを容易にする方法

PythonはITに最適で、システムの自動化から機械学習などの最先端の分野での作業まで、さまざまな種類の作業を簡素化します。

仮想環境を作成する

特定のディレクトリに仮想環境を作成するには、次のように入力します。

python3 -m venv /path/to/directory

(システムがデフォルトのPython 3インタープリターとして認識している場合のpython代わりに使用できることに注意してください 。)python3python

仮想環境をセットアップするプロセス全体には、1〜2分かかる場合があります。完了すると、いくつかのサブディレクトリを含むディレクトリが作成されます。最も重要なサブディレクトリは bin、Unixまたは ScriptsWindows上にあります。ここには、仮想環境用のPythonインタープリターのコピーとそのユーティリティがあります。

各仮想環境にはPythonインタープリターの独自のコピーが含まれているため、かなり大きくなる可能性があることに注意してください。WindowsとLinuxの両方で、Python3.6仮想環境は約23MBのディスクスペースを消費します。

仮想環境をアクティブ化する

この仮想環境を使用する前に、明示的にアクティブ化する必要があります。アクティベーションにより、セッション中、仮想環境がデフォルトのPythonインタープリターになります。

使用しているオペレーティングシステムとコマンドシェルに応じて、仮想環境をアクティブ化するために異なる構文を使用する必要があります。

  • UnixまたはMacOSでは、bashシェルを使用します。 source /path/to/venv/bin/activate
  • UnixまたはMacOSでは、cshシェルを使用します。 source /path/to/venv/bin/activate.csh
  • UnixまたはMacOSでは、fishshellを使用します。 source /path/to/venv/bin/activate.fish
  • コマンドプロンプトを使用するWindowsの場合:path\to\venv\Scripts\activate.bat
  • PowerShellを使用するWindowsの場合: path\to\venv\Scripts\Activate.ps1

アクティブ化された環境は、アクティブ化されたコンテキストでのみ機能することに注意してください。たとえば、PowerShellの2つのインスタンスAとBを起動し、インスタンスAで仮想環境のみをアクティブ化した場合、その環境はAにのみ適用されます。他の場所には適用されません。

仮想環境を構成して使用する

新しい仮想環境をアクティブ化したら、pipパッケージマネージャーを使用して、そのパッケージを追加および変更できます。pipは、ScriptsWindowsでは仮想環境のサブディレクトリにあり、UnixOSではサブディレクトリにありますbin

pipの動作方法に既に精通している場合は、準備ができています。仮想環境でも同じである必要があります。仮想環境のパッケージを管理するpipのインスタンスを、それがアクティブ化されたコンテキスト(bashセッションやWindows CLI / PowerShellセッションなど)で使用していることを確認してください。適切なpipと適切な仮想環境を使用していることを確認する場合は、pip -V表示されるパスが仮想環境のサブディレクトリを指していることを入力して確認します。

作成した仮想環境を使用してPythonスクリプトを実行するには、Pythonをアクティブ化したコンテキストのコマンドラインからPythonを呼び出すだけです。

仮想環境の非アクティブ化

仮想環境の使用が終了したら、それを使用していたセッションを終了するだけです。環境で作業を続けたいが、代わりにデフォルトのPythonインタープリターを使用する場合deactivateは、プロンプトで入力します。コマンドプロンプトのWindowsユーザーdeactivate.batScriptsサブディレクトリから実行する必要がありますが、UnixユーザーとPowerShellを実行しているWindowsユーザーdeactivateは、任意のディレクトリに入力するだけです。

仮想環境の削除

仮想環境は自己完結型です。仮想環境が不要になったら、そのディレクトリを削除するだけです。

Python2の仮想環境

Python 2では、仮想環境は言語のネイティブ機能ではありません。代わりに、仮想環境を作成および管理するためにサードパーティのライブラリをインストールする必要があります。

これらのプロジェクトで最も人気があり、広く使用されているのはvirtualenvです。これは、ディレクトリ構造の作成と必要なファイルの仮想環境へのコピーを処理します。virtualenvをインストールするには、を使用するだけpip install virtualenvです。それを使用して仮想環境ディレクトリを作成するには、と入力しvirtualenv /path/to/directoryます。仮想環境のアクティブ化と非アクティブ化は、Python 3の仮想環境の場合と同じように機能します(上記を参照)。

Jupyterノートブックでの仮想環境の使用

Jupyterノートブック(別名IPythonノートブック)を使用していて、Jupyterがシステム全体に既にインストールされている場合は、仮想環境を作成してアクティブ化します。次に、仮想環境ディレクトリから実行pip install ipykernelして、IPythonに必要なコンポーネントを追加します。最後に、を実行しますipython kernel install —user —name=。ここで、project_nameは、その特定のプロジェクトに関連付ける名前です。そこから、Jupyterを起動し、仮想環境内にインストールしたIPythonカーネルに切り替えることができるはずです。