Pythonで開発(に限らないとは思いますが。。)の際に、プロジェクトごとにライブラリ等の依存ファイルが混同して環境が壊れないよう、それぞれ独立した開発環境(仮想環境)を作ることが推奨されています。方法はいくつかありますが、今回はAnacondeを使った仮想環境の構築についてまとめます。
環境
- OS: Ubuntu16.04LTS
- conda 4.7.12
Pythonの仮想環境
Pythonで開発する際の仮想環境は下記の通りいくつかあります。
- virtualenv
- venv
- Anaconda
- docker など…
それぞれの違いは別の機会に整理するとして、今回はAnacondaを使った仮想環境の構築の仕方について解説します。
現在の仮想環境を確認
conda info -eコマンドを使います。
下記はpy36-ml01とpython3.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で仮想環境を作成する方法や環境に入る方法、削除する方法についてまとめました。
コメント
[…] Anaconda […]