Anacondaのデフォルト環境(root環境)はmatplotlibを始め多くのパッケージが用意されています。新しく環境を作るとパッケージが入っていないので、root環境を複製する方法をまとめておきます。
ここで実施するのはroot環境の複製ですが、root環境以外の環境でも使えるハズです。
現在の環境を確認
Anaconda Promptを起動して、現在の状態を確認します。
>conda env list
# conda environments:
#
tensorflow C:\Anaconda3\envs\tensorflow
root * C:\Anaconda3
現在の環境一覧を表示させます。*印がついているものが現在有効になっている環境。
> conda list
root環境に入っているパッケージを確認します。pipでインストールされたものも一緒に表示されます。
様々なパッケージがインストールされていることがわかります。
一旦、新環境を作ってみる
普通に新環境を作成してみます。
>conda create -n testenv1
Fetching package metadata ...........
Solving package specifications:
Package plan for installation in environment C:\Anaconda3\envs\testenv1:
Proceed ([y]/n)? y
#
# To activate this environment, use:
# > activate testenv1
#
# To deactivate this environment, use:
# > deactivate testenv1
#
# * for power-users using bash, you must source
#
testenv1という環境を作成しました。
>conda env list
# conda environments:
#
tensorflow C:\Anaconda3\envs\tensorflow
testenv1 C:\Anaconda3\envs\testenv1
root * C:\Anaconda3
一覧にtestenv1が追加されています。
.
新環境をActivateして、インストールされているパッケージを確認します。
(C:\Anaconda3) c:\work2>activate testenv1
(testenv1) c:\work2>
activateコマンドで新環境を有効にすると、プロンプトの表示が(C:\Anaconda3)から(testenv1)に変わりました。
(testenv1) c:\work2>conda list
# packages in environment at C:\Anaconda3\envs\testenv1:
#
(testenv1) c:\work2>
インストールされているパッケージが無いことがわかります。ここで新環境の作業は終了。
root環境に戻ります。
(testenv1) c:\work2>activate root
(root) c:\work2>conda env list
# conda environments:
#
tensorflow C:\Anaconda3\envs\tensorflow
testenv1 C:\Anaconda3\envs\testenv1
root * C:\Anaconda3
root環境の設定をエクスポート
現在の仮想環境の設定ファイルを書き出します。
(root) c:\work2>conda env export > envroot.yaml
(root) c:\work2>dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は 2E75-53E0 です
c:\work2 のディレクトリ
2018/02/07 17:28 <DIR> .
2018/02/07 17:28 <DIR> ..
2018/02/07 17:28 4,955 envroot.yaml
1 個のファイル 4,955 バイト
2 個のディレクトリ 77,481,476,096 バイトの空き領域
envroot.yamlというファイルが作成されました。
エクスポートした設定ファイルを編集
テキストエディタで作成された設定ファイルを開いて編集します。
1行目のname: と、最終行のprefix: を編集します。新しい環境としてenvtest2を作成することにします。
prefixのところは、環境の実体が作成されるフォルダです。基本的にはAnaconda3のルートフォルダ配下の「envs」フォルダ配下に環境名のフォルダが作成されます。
また、パッケージ一覧のところからcondaパッケージとconda-envパッケージの行を削除します。これらはroot環境でしか使えません。
★この状態だと、新環境用のAnaconda NavigatorやSpyderなどもインストールされますので要精査かも!★
name: envtest2
channels:
- defaults
dependencies:
- _license=1.1=py36_1
- alabaster=0.7.10=py36_0
・・(中略)・・
- pip:
- backports.shutil-get-terminal-size==1.0.0
- et-xmlfile==1.0.1
- ipython-genutils==0.2.0
- jupyter-client==5.0.1
- jupyter-console==5.1.0
- jupyter-core==4.3.0
- prompt-toolkit==1.0.14
- rope-py3k==0.9.4.post1
- tables==3.2.2
- win-unicode-console==0.5
prefix: C:\Anaconda3\envs\envtest2
編集したら保存して閉じます。紛らわしくなるのでファイル名をリネームしておきます。
編集した設定ファイルで新環境を作成
現在の環境一覧と、設定ファイルを確認します。
(root) c:\work2>conda env list
# conda environments:
#
tensorflow C:\Anaconda3\envs\tensorflow
testenv1 C:\Anaconda3\envs\testenv1
root * C:\Anaconda3
(root) c:\work2>dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は 2E75-53E0 です
c:\work2 のディレクトリ
2018/02/07 17:38 <DIR> .
2018/02/07 17:38 <DIR> ..
2018/02/07 17:35 4,973 envtest2.yaml
1 個のファイル 4,973 バイト
2 個のディレクトリ 77,479,673,856 バイトの空き領域
設定ファイルを使って環境を作成します。
(root) c:\work2>conda env create -f envtest2.yaml
・・(中略)・・
Requirement already satisfied: numpy>=1.7.1 in c:\anaconda3\envs\env
bles==3.2.2)
Requirement already satisfied: numexpr>=2.4 in c:\anaconda3\envs\env
bles==3.2.2)
#
# To activate this environment, use:
# > activate envtest2
#
# To deactivate this environment, use:
# > deactivate envtest2
#
# * for power-users using bash, you must source
#
(root) c:\work2>
(インストールの途中でコマンドプロンプトのフォントが変更されるようなので、Anaconda Promptを一旦閉じて再度起動するとよいかもしれません。)
環境一覧を表示して新環境ができていたらActivateして中身を確認します。
(C:\Anaconda3) c:\work2>conda env list
# conda environments:
#
envtest2 C:\Anaconda3\envs\envtest2
tensorflow C:\Anaconda3\envs\tensorflow
testenv1 C:\Anaconda3\envs\testenv1
root * C:\Anaconda3
(C:\Anaconda3) c:\work2>activate envtest2
(envtest2) c:\work2>conda list
# packages in environment at C:\Anaconda3\envs\envtest2:
#
_license 1.1 py36_1
alabaster 0.7.10 py36_0
anaconda 4.4.0 np112py36_0
anaconda-client 1.6.3 py36_0
anaconda-navigator 1.6.2 py36_0
いろんなライブラリがインストールされていますね!
これで終了です!