Conda コマンド では、複数のConda環境を作成して、切り替えながら利用する方法を解説しました。
Anacondaではない、一般のPythonでも同じように複数の環境を作成して切り替えながら利用できるようになっており、標準モジュールのvenv が利用されます。
一般的なWebのPython入門サイトや書籍などでは、Pythonの実行環境として venv
の利用をを推奨しているものがほとんどです。しかし、そういった解説では、Anaconda環境ではなく、一般のPythonを利用を前提としています。
Anaconda環境でのvenv¶
venv
は、Anaconda環境でも使えないわけではありません。しかし、venv
はpip
コマンドでパッケージをインストールして利用する前提のツールですので、venv
環境内では、conda
でインストールしたパッケージは利用できなくなってしまいます。
たとえば、conda環境で requests
パッケージをインストールしてみましょう。
まず、conda環境をアクティベートし、requests
をインストールします。
$ conda activate py37
(py37) $ conda install requests
Collecting package metadata (current_repodata.json): done
Solving environment: done
...
Proceed ([y]/n)? y
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
この状態なら、正常に requests
パッケージを利用できます。
(py37) $ python
Python 3.7.7 (default, May 6 2020, 04:59:01)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
しかし、venv
による仮想環境を有効にすると、使えなくなってしまいます。
(py37) $ python3 -m venv .vnev
(py37) $ . ./.venv/bin/activate
(.venv) (py37) $ python3
Python 3.7.7 (default, May 6 2020, 04:59:01)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'requests'
venv環境では、conda
でインストールしたパッケージは利用できません。pip
でインストールすれば、使えるようになります。
(.venv) (py37) $ pip install requests
(.venv) (py37) $ python3
Python 3.7.7 (default, May 6 2020, 04:59:01)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
Anaconda環境では、venvは不要¶
conda
と venv
は、どちらも実行環境の管理という良く似た機能を提供しています。しかし、venv
はAnaconda環境用には作られていないので、Anacondaの conda
などが使えなくなってしまいます。これではAnacondaを使う意味がありませんので、venv
は使わず、conda
を利用して実行環境を整えるようにしましょう。