Pythonの仮想環境を構築するための適切な選択。venv? Anaconda?
Pythonは、データ サイエンス、機械学習、Web 開発などで使用されている多用途な言語です。Pythonと依存関係の管理に不可欠な仮想環境は、重要な役割を果たします。適切に管理されていない Python 環境では、依存関係の競合が発生し、アプリケーションの構築が妨げられる可能性があります。 今回は、Pythonの仮想環境を構築する方法とPythonの多用途性ついて紹介します。
仮想環境とは?
プロジェクトごとに異なるPythonバージョンやライブラリを使用するために、Python開発環境を分離する方法です。
仮想環境が必要な理由
仮想環境を作らずに直接にライブラリーやパッケージをインスールして使っても、単純な Python スクリプト プロジェクトではうまく機能します。 しかし、Python ライブラリ、API、SDK(Software Development Kit)の構築などの複雑な開発プロジェクトでは、複数のファイル、複数のパッケージの依存関係を扱うことになります。
例えば、プロジェクト A では Python 3.7 と TensorFlow 1.14 を使用し、プロジェクト B では Python 3.9 と PyTorch 1.8 を使用したい場合、仮想環境を使用することで、プロジェクトごとに異なる環境を構築できます。
互換性のないバージョンが存在すると、依存関係の競合が発生し、エラーが発生する可能性があります。そういったことを回避するために、Python プロジェクトを開発する際、プロジェクトごとに異なる Python バージョンやライブラリを使用したいと考えます。
プロジェクト用に Python 開発環境を分離し、Python のパッケージと依存関係を管理するには、仮想環境が不可欠なのです。
仮想環境では、Python プロジェクトを分離することで、依存関係、バージョン、権限の競合を防ぎます。
仮想環境の必要性まとめ
依存関係の競合を回避し、エラーを防ぐ
プロジェクトごとに必要なライブラリを管理
Python環境をバージョンごとに整理
仮想環境を構築する方法、2 つの人気のあるツールvenv と Anacondaを比較
Python には、仮想環境を作成および使用するための複数の方法が用意されています。 仮想環境を作成するための 2 つの一般的なツールは、venvとAnaconda。まずは人気のある2つのツールを比較します。
venv
venv は Python 3.3 以降に標準搭載されている仮想環境ツールです。軽量で、使い方が簡単です。(※Python 2系には使えません)
以下のようなコマンドを叩くと仮想環境が作れます。Pythonもインストールされます。
python3 -m venv myenv
次に環境をアクティブ化するには、以下のようにします。
source myenv/bin/activate
もしくは . myenv/bin/activate
無効化するには、deactivate
と入力するだけです。
Conda
Conda は Python だけでなく、Ruby、Scala、R、C/C++ などの言語をサポートする 仮想環境を管理するツールです。Miniconda や Anaconda で使用したデータサイエンスに使いやすいです。 Conda はデータサイエンティストに好まれており、Anaconda と Miniconda の両方にプリインストールされています。
Anaconda を使用して仮想環境
AnacondaはPythonの仮想環境を構築するためのツールです。PythonやFlaskなどのパッケージをまとめて管理することができます。(Pythonインタプリタ、NumPy、SciPy、Matplotlib などのデータ サイエンスで活用するライブラリ、Jupyter Notebook などがセットアップされています。) GUIによる操作であるAnaconda Navigatorで操作もできることから初心者にも使いやすい仕様です。
Anaconda を使用して仮想環境を作成するには以下の流れです。
Anaconda をWebサイトからインストールする
以下のようなコマンドを叩くと仮想環境が作れます。
conda create --name myenv
Condaはユーザーのホームディレクトリに .conda/envs という名前のフォルダを作成し、その中に仮想環境を作成します。
環境をアクティブ化するには、次を使用します。
conda activate myenv
無効にするには、 conda deactivate
を使用します。
データサイエンスをするのなら、データサイエンス関連の主要パッケージがひとまとめになったパッケージである Anaconda を使うのが便利です。
Anacondaのデメリットとしては、インストールファイルが大きい:ことです。約500MBとファイルが大きく、動作が重いことがデメリットとして挙げられます。
HomebrewとAnacondaが干渉するみたいなので注意しましょう。また、Anaconda は最初から Mac に入っている python と競合するので pyenv と virtualenvを使ってインストールしてもいいかもしれません。
minicondaを使用して仮想環境
minicondaをWebサイトからインストールする
以下のようなコマンドを叩くと仮想環境が作れます。
conda create --name env_name python=3.x
conda activate env_name
Minicondaはインストールフォルダ内に envs という名前のフォルダを作成し、その中に仮想環境を作成します。
Homebrewで管理したい場合は、minicondaをインストールすることをおすすめします。Minicondaは軽量で、デフォルトで多くのパッケージをインストールしません。
venv と Anaconda: どちらを選択するべきですか?
最も人気のありそうなvenvとconda(Anaconda)のどちらを利用するか迷った際に考えるべきポイントは下記になるかと思います。
最小限の環境を構築する場合は、venvです。
データ サイエンスのプロジェクトで、さまざまな事前インストール済みパッケージが必要な場合は、Anaconda が適しています。
Python を初めて使用し、GUI を好む場合は、Anaconda の Navigator が役立ちます。
Pythonの環境構築の仮想環境によく使われる3つの方法
Virtualenv
Virtualenv も人気があり、初心者に優しい Python 仮想環境です。
venv と virtualenv は機能的には似ていますが、venv は Python 3 の組み込みモジュールであるのに対し、virtualenv は外部ライブラリです。virtualenvの一部機能がvenvとして切り出されて組み込みモジュールとなりました。 軽量です。
virtualenvはPython 2系とPython 3系の両方をサポートしています。Python 3.3以降では、venvが推奨されますが、Python 2を使用する場合は、virtualenvを使用することが必要となります。
pip install virtualenv
python<version> -m venv <virtual-environment-name>
シンプルで使いやすい仮想環境を求める場合はvenv、高度な機能が必要な場合はvirtualenvを選択するのがおすすめです。
Pyenv/ pyenv-virtualenv
pyenv は、マシン上の複数の Python バージョンを管理できるツールです。 pyenvは、macOS に複数の Python バージョンをインストールして管理しますが、Homebrew でインストールすることが勧められています。
まずはHomebrew から pyenv をインストールします。
1. ターミナルで以下のコマンドを実行
brew install pyenv
2. ~/.zshrc
ファイルを開く
vim ~/.zshrc
3. ファイル末尾に以下の行を追加
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
4. ファイルを保存して閉じる
:wq
5. ターミナルを再起動
source ~/.zshrc
必要なパッケージとPython3.11のインストール。
brew install xz
pyenv install 3.11
pyenv global 3.11.8
globalはシステム全体で使うバージョンを変えたいときに使用。
localはプロジェクトごとで違うバージョンを使いたいときに使用。
pyenv versions
コマンドで、バージョンが切り替わっているか確認しましょう。
Windows を使用している場合はpyenv-winを使用することができます。
pyenv-virtualenv プラグインを使用すると、pyenv で簡単に仮想環境を作成できます。pyenv-virtualenv は、pyenv のプラグインであり、仮想環境 を簡単に作成、管理、切り替えるための機能を追加します。より上級者向けになります。
人気のあるPythonの仮想環境の構築方法の動画
venv、virtualenv、miniconda、Anaconda、pyenvのそれぞれ仮想環境の構築を動画にしました。
そのほかのPythonの仮想環境
Poetry
Poetryは比較的新しいツールであり、pythonのパッケージ管理ツールです。 Poetryはプロジェクトごとに仮想環境を自動生成し、プロジェクトに必要なライブラリのみをインストールします。 プロジェクトに必要なライブラリのバージョンを固定し、環境間で依存関係の差分が発生しないようにします。
Virtualenvwrapper
virtualenvwrapper は、仮想環境を管理するための追加機能を提供する virtualenv の拡張機能です。
Pipenv
仮想環境とパッケージ管理を組み合わせたツールです。プロジェクトごとに新しい仮想環境を作成し、必要なパッケージを Pipfile から自動的にインストールします。プロジェクトの依存関係を管理するプロセスを簡素化するように設計されており、virtualenv よりもシンプルなインターフェイスを提供します。
Pyvenv
Python 3.6 以降のバージョンで非推奨になったツールで、venv に似ています。venv モジュールに置き換えられたため、使用することはお勧めできません。
用途で考える仮想環境
最適なpythonの仮想環境の構築方法の選択は何でしょうか。用途から考えると下記になります。
データ分析: Anaconda または conda
アプリ開発: venv、conda、pyenv、virtualenv
データ分析: Anaconda は、データ分析に必要なライブラリがプリインストールされているため、インストールの手間が省けます。conda を使用すれば、Anaconda だけでなく、他の Python バージョンやライブラリもインストールできます。
アプリ開発: アプリ開発では、プロジェクトごとに必要なライブラリが異なるため、venv、conda、pyenv、virtualenv のいずれでもニーズに合わせて選択できます。
データ分析では、Anaconda または conda を使用するのがおすすめです。アプリ開発では、venv、conda、pyenv、virtualenv のいずれでもニーズに合わせて選択できます。
レベル別と用途別にまとめてみた表は下記になります。