Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのvenvモジュールで仮想環境を作成する方法

仮想環境が必要な理由

Pythonベースのアプリケーションを開発していると、特定のバージョンのPythonパッケージが必要になることがあります。しかし、そのバージョンをシステム全体向けにインストールしてしまうと、他のアプリケーションが要求するパッケージのバージョンと競合する可能性があります。このような互換性の問題を回避するためには、目的ごとに独立した環境を並行して用意しておくことが望まれます。

仮想環境を利用すれば、Pythonパッケージをシステム全体ではなく、特定のアプリケーション専用の隔離された場所にインストールできます。

venvモジュールで仮想環境を作成する

Pythonの標準ライブラリに含まれるvenvモジュールを使うと、仮想環境を作成できます。仮想環境とは、ファイルシステム上の一つのディレクトリであり、独自のPythonインタープリタや各種スクリプトのコピーを保持しています。以下のコマンドを実行すると、指定した名前のディレクトリに仮想環境が作成されます。

C:\python37>python -m venv e:\testenv

コマンド実行後、指定した場所に新しいディレクトリが作成されていることを確認できます。必要に応じて、以下のオプションを指定することも可能です。

--system-site-packages
仮想環境からシステムのsite-packagesディレクトリへのアクセスを許可します。
--symlinks
コピーではなくシンボリックリンクの使用を試みます。
--copies
シンボリックリンクではなくコピーの使用を試みます。
--clear
環境ディレクトリが既に存在する場合、その内容を削除します。
--upgrade
環境ディレクトリを、このバージョンのPythonを使用するようにアップグレードします。
--without-pip
仮想環境へのpipのインストール・アップグレードをスキップします(デフォルトではpipが自動的にセットアップされます)。

Scriptsフォルダの内容

ENV_DIR(この例ではtestenv)配下の「scripts」フォルダには、Pythonインタープリタのローカルコピー、pipインストーラー、そして環境を有効化・無効化するためのスクリプトが格納されています。

activate
activate.bat
activate.ps1
deactivate.bat
easy_install-3.7.exe
easy_install.exe
pip.exe
pip3.7.exe
pip3.exe
python.exe
pythonw.exe

仮想環境を有効化する

隔離された環境内でPythonを起動するには、まず仮想環境を有効化(アクティベート)する必要があります。そのためには、コマンドラインから「activate.bat」を実行します。

E:\testenv>scripts\activate

(testenv) E:\testenv>python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

コマンドプロンプトの左側に括弧付きで仮想環境名が表示されていれば、有効化は成功です。これで仮想環境内のPythonを利用できるようになります。

この状態でpip3ユーティリティを使ってパッケージをインストールすると、仮想環境のscriptsフォルダ内にローカルインストールされるため、システム全体からは参照されません。

仮想環境を無効化する

通常の環境へ戻るには、scriptsフォルダ内の「deactivate.bat」を使って仮想環境を無効化(ディアクティベート)します。

>>> quit()

(testenv) E:\testenv>scripts\deactivate
E:\testenv>

補足:古いバージョンのPythonの場合

Python 3.3より前のバージョンでは、別途インストールが必要な「virtualenv」を使用してください。

また、venvモジュールにはEnvironmentBuilderクラスが定義されており、スクリプトからプログラム的に仮想環境を作成することも可能です。

  1. Python仮想環境の基本:venv・virtualenvによる環境構築と依存関係管理の完全ガイド

    はじめに開発者は、Python標準ライブラリに含まれていないモジュールやパッケージを使用する必要があるプロジェクトに、頻繁に直面します。こうしたパッケージは、特定のアプリケーション専用であることが少なくありません。例えば、マシンには最新バージョンのPython(仮にPython 3.6とします)がインストールされているのに、あるプロジェクトでは特定のバージョン(Python 2.7)が求められるケースを考えてみましょう。この場合、新しいパッケージだけでなく、すでにインストール済みのアプリケーションに対しても特定バージョンの要求が発生します。すると要件同士が衝突し、2.7と3.6のどちらか一方を

  2. PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法

    はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c