【Python】Anacondaを使った仮想環境の構築

Pythonで開発(に限らないとは思いますが。。)の際に、プロジェクトごとにライブラリ等の依存ファイルが混同して環境が壊れないよう、それぞれ独立した開発環境(仮想環境)を作ることが推奨されています。方法はいくつかありますが、今回はAnacondeを使った仮想環境の構築についてまとめます。

環境

  • OS: Ubuntu16.04LTS
  • conda 4.7.12

Pythonの仮想環境

Pythonで開発する際の仮想環境は下記の通りいくつかあります。

  • virtualenv
  • venv
  • Anaconda
  • docker など…

それぞれの違いは別の機会に整理するとして、今回はAnacondaを使った仮想環境の構築の仕方について解説します。

現在の仮想環境を確認

conda info -eコマンドを使います。
下記はpy36-ml01python3.7という名前の環境があることを、*は現在いる環境を示しています。

$ conda info -e
# conda environments:
#
base                  *  /home/hibikisan/anaconda3
py36-ml01                /home/hibikisan/anaconda3/envs/py36-ml01
python3.7                /home/hibikisan/anaconda3/envs/python3.7

仮想環境を作る

conda create コマンドを使います。
コマンドパラメータの意味は次の通りです。

  • -n [envname] :仮想環境の名前(この場合はpy37env)
  • python=3.6 : pythonのバージョンを指定
  • anaconda: anacondaに登録されているパッケージを全てコピー
$ conda create -n py37env python=3.7 anaconda
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

    environment location: /home/hibikisan/anaconda3/envs/py37env

    added / updated specs:
    - anaconda
    - python=3.7


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    _anaconda_depends-2019.03  |           py37_0           6 KB
    anaconda-custom            |           py37_1           3 KB
    anaconda-client-1.7.2      |           py37_0         147 KB
    asn1crypto-0.24.0          |           py37_0         156 KB

    :
    (長いので略)
    :

    zlib               pkgs/main/linux-64::zlib-1.2.11-h7b6447c_3
    zstd               pkgs/main/linux-64::zstd-1.3.7-h0b5b093_0
    
    
    Proceed ([y]/n)? y

ここでyを押すと環境作成が始まります。この場合はAnacondaのパッケージ全部を指定しているので時間かかるのでしばらく待ちましょう。

仮想環境へ入る

conda activate [envname]を使います。
コマンドラインの先頭に先ほど作成した環境名(この場合は”py37env”)が出てくればOK。

$ conda activate py37env
(py37env) $

★環境が作成できているか確認
(py37env) $
 conda info -e
# conda environments:
#
base                     /home/hibikisan/anaconda3
py36-ml01                /home/hibikisan/anaconda3/envs/py36-ml01
py37env               *  /home/hibikisan/anaconda3/envs/py37env
python3.7                /home/hibikisan/anaconda3/envs/python3.7

(py37env) $
 

尚、source activate [envname]でも仮想環境に入れます。

conda deactivateで仮想環境から抜けることができます。

(py37env) $ conda deactivate
$

★環境から抜けているか確認
$ conda info -e
# conda environments:
#
base                  *  /home/hibikisan/anaconda3
py36-ml01                /home/hibikisan/anaconda3/envs/py36-ml01
py37env                  /home/hibikisan/anaconda3/envs/py37env
python3.7                /home/hibikisan/anaconda3/envs/python3.7

仮想環境を削除する

conda removeを使います。
コマンドパラメータの意味は次の通りです。

  • -n [envname] : 仮想環境の名前
  • –all : 全てのパッケージを削除
$ conda remove -n py37env --all

Remove all packages in environment /home/hibikisan/anaconda3/envs/py37env:


## Package Plan ##

    environment location: /home/hibikisan/anaconda3/envs/py37env


The following packages will be REMOVED:

    _anaconda_depends-2019.03-py37_0
    _libgcc_mutex-0.1-main
    alabaster-0.7.12-py37_0
        :
        (長いので略)
        :
    zlib-1.2.11-h7b6447c_3
    zstd-1.3.7-h0b5b093_0
  
  
Proceed ([y]/n)? y ★y を押して処理を継続

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
$ 

★削除されているか確認
$ conda info -e
# conda environments:
#
base                  *  /home/hibikisan/anaconda3
py36-ml01                /home/hibikisan/anaconda3/envs/py36-ml01
python3.7                /home/hibikisan/anaconda3/envs/python3.7

Conda vs Pip vs Virtualenvコマンド比較

condaの公式リファレンスにそれぞれのコマンド比較表が載っていたので共有。意外に便利かも?

https://docs.conda.io/projects/conda/en/latest/commands.html#conda-vs-pip-vs-virtualenv-commands

まとめ

Anacondaで仮想環境を作成する方法や環境に入る方法、削除する方法についてまとめました。

Learn more...

書籍でもう少し詳しく学びたい場合はこちらもどうぞ。筆者もかなり参考にさせてもらっています!

[Sponsor link]