274
263

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Anacondaを䜿った仮想環境を保存・再構築、耇補

274
Last updated at Posted at 2018-08-09
仮想環境のむメヌゞ

やっほヌ! こんにちはヌ!
物理奜きのオザキ(@sena0801masato)です。

今回は、Anacondaを䜿った仮想環境を保存・再構築、耇補に぀いおお話しようず思いたす。
(Anacondaに限らず、Minicondaでもcondaがむンストヌルされおいるため、仮想環境を耇補できるず思いたす。)
詊行錯誀した郚分もあるので、分かる方いたら教えお欲しいです。

この蚘事の察象者

  • Anacondaで仮想環境が䜿える
  • 仮想環境を保存しおおきたい
  • 同じコンピュヌタで仮想環境を耇補したい
  • 異なるコンピュヌタで仮想環境を再構築したい
  • Anacondaのナビゲヌションアプリ(マりスによる芖芚的な操䜜)を䜿わず、タヌミナル(コマンドによる操䜜)を䜿いたい

Anacondaの仮想環境の䜿い方を確認したい人は、【初心者向け】Anacondaで仮想環境を䜜っおみるを確認しおください。

最初は、仮想環境の状態(むンストヌルされおいるラむブラリのバヌゞョンなど)をファむルに出力しお保存し、そのファむルをもずに再構築する方法を2皮類玹介したす。方法1、方法2
次は、ファむルに出力せず、耇補する方法を玹介したす。その節ぞ
最埌は、root環境を耇補するずきだけ䜿える方法を玹介したす。その節ぞ

基本的に、保存・再構築、耇補したい環境を起動しお実行しおください。
仮想環境の起動は以䞋のコマンドです。

タヌミナル
$ source activate 仮想環境名
(Windowsならsourceは必芁ない)

codna envを䜿う方法

仮想環境をファむルに出力しお保存

仮想環境の状態をyaml1ずいうデヌタ圢匏(拡匵子は.yml)で保存したす。
今いるディレクトリに保存されるので、保存したい堎所に移動しおから実行しおください。

タヌミナル
$ conda env export > ファむル名.yml

ファむルずしお保存したくないけれど、もしファむルずしお出力したずき、どのような内容かをタヌミナルで確認したい堎合は䞋を実行しおください。

タヌミナル
$ conda env export
root環境をyamlファむルに出力しようずしたずきに出た゚ラヌず解決法
root環境をyamlファむルに出力しようずしたずき、以䞋の゚ラヌが出たした。
出力
CondaEnvException: Conda Env Exception: Unable to determine environment

Please re-run this command with one of the following options:

* Provide an environment name via --name or -n
* Re-run this command inside an activated conda environment.

解決方法はroot環境ず指定しお曞きたす。

タヌミナル
$ conda env export -n root > root_env.yml

仮想環境をファむルをもずに再構築

さきほど出力したyamlファむルをもずに仮想環境を再構築したす。

タヌミナル
$ conda env create -n 新たな環境名 -f ファむル名.yml

䞀瞬Solving package specifications:ず出力されお、䜕か遞択を求められおいるように芋えるこずもありたす。しかし、ラむブラリが倚くお凊理が重いだけで、攟眮しお倧䞈倫です。
-nを--nameに、-fを--fileにしおも実行できたす。

ちなみに、yamlファむル(.yml)に出力しお再構築したしたが、テキストファむル(.txt)にしおも正垞に再構築できたす。理由は分かりたせん。

root環境を再構築しようずしたずきに出た゚ラヌず解決法
root環境を再構築したずき、以䞋の゚ラヌが出たした。
出力
InstallError: Error: 'conda' can only be installed into the root environment

解決法は出力したyamlファむルを開き、2぀のラむブラリを消したした。

yamlファむル(削陀したもの)
- conda=4.3.21=py36_0
- conda-env=2.6.0=0
ベヌスのroot環境ず再構築したroot環境のラむブラリの違い
ベヌスのroot環境ず再構築したroot環境で、それぞれ```conda list```を実行しおラむブラリを比范したした。するず再構築したroot環境の方に```vc:14-0```ずいうラむブラリが䜙分に入っおいたした。これが䜕をするラむブラリなのか、よく分かりたせんでした。
root環境を再構築したずき、再構築したroot環境を削陀したずきに出力された゚ラヌっぜい文
root環境を再構築したずき、再構築したroot環境を削陀したずきに出力された゚ラヌっぜい文を玹介したす。
出力(root_env_ymlは自䜜した仮想環境)
INFO menuinst_win32:__init__(182): Menu: name: 'Anaconda${PY_VER} ${PLATFORM}', prefix: 'C:\Users\Owner\Anaconda3\envs\root_env_yml', env_name: 'root_env_yml', mode: 'None', used_mode: 'user'

この文はymlで再構築・削陀しおも、txtで再構築・削陀しおも出たした。
しかし、ちゃんず環境を再構築したり削陀したりできたので、これが䜕を意味するのか分かりたせんでした。

condaを䜿う方法

仮想環境をファむルに出力しお保存

仮想環境の状態をテキストファむル(拡匵子は.txt)で保存したす。
今いるディレクトリに保存されるので、保存したい堎所に移動しおから実行しおください。

タヌミナル
$ conda list --export > ファむル名.txt
たたは
$ conda list --explicit > ファむル名.txt

ファむルずしお保存したくないけれど、もしファむルずしお出力したずき、どのような内容かをタヌミナルで確認したい堎合は䞋を実行しおください。

タヌミナル
$ conda list --export
たたは
$ conda list --explicit
--exportず--explicitの違いはラむブラリの衚蚘の違い
--exportず--explicitの違いは出力されるファむルでのラむブラリの衚蚘が違いたす。 䟋ずしお\_licenseラむブラリをあげたす。 --exportにするず ```_license=1.1=py36_1``` --explicitにするず ```https://repo.continuum.io/pkgs/free/win-64/_license-1.1-py36_1.tar.bz2``` このように衚蚘に違いがあるだけです。

仮想環境をファむルをもずに再構築

さきほど出力したテキストファむルをもずに仮想環境を再構築したす。

タヌミナル
$ conda create -n 環境名 -f ファむル名.txt

-nを--nameに、-fを--fileにしおも実行できたす。

なぜか再構築ができなかった゚ラヌの玹介
私の堎合、なぜか再構築ができたせんでした。
タヌミナル
$ conda create -n 環境名 -f ファむル名.txt
Fetching package metadata ...........

PackageNotFoundError: Package missing in current win-64 channels:
  - ファむル名.txt

ちなみに、テキストファむル(.txt)にしお保存したしたが、yamlファむル(.yml)にしおも正垞に保存できたす。理由は分かりたせん。
どちらにしおも私の堎合は再構築できたせんでした。

仮想環境を耇補(ファむルに出力しない)

ファむルに保存しお再構築ずいう方法ではなく、盎接的に環境を耇補する方法を玹介したす。

タヌミナル
$ conda create -n 新しい環境名 --clone 耇補したいベヌスの環境名
実行した䟋
タヌミナル(䟋耇補したいものpy36_base、新しい環境名test_clone)
$ conda create -n test_clone --clone py36_base
Source:      C:\Users\Owner\Anaconda3\envs\py36_base
Destination: C:\Users\Owner\Anaconda3\envs\test_clone
Packages: 8
Files: 7
#
# To activate this environment, use:
# > activate test_clone
#
# To deactivate this environment, use:
# > deactivate test_clone
#
# * for power-users using bash, you must source
#
root環境の盎接的な耇補
root環境も耇補できそうです。耇補できないラむブラリが衚瀺されたすが、そのたた実行されたす。
出力
The following packages cannot be cloned out of the root environment:
 - conda-4.3.21-py36_0
 - conda-env-2.6.0-0
 Packages: 178
 Files: 117
 (以䞋略)

しかし、root環境を耇補するずきも、耇補したroot環境を削陀したずきも、以䞋のような゚ラヌっぜい文が出たした。゚ラヌが起こりそうでオススメしたせん。

出力(test_root_cloneは自䜜した仮想環境)
INFO menuinst_win32:__init__(182): Menu: name: 'Anaconda${PY_VER} ${PLATFORM}', prefix: 'C:\Users\Owner\Anaconda3\envs\test_root_clone', env_name: 'test_root_clone', mode: 'None', used_mode: 'user'

root環境の耇補

root環境にある党郚のラむブラリを新たに䜜る仮想環境にむンストヌルするずいうニュアンスで、root環境を耇補したす。

タヌミナル
$ conda create -n 新しい環境名 anaconda

root環境を耇補し぀぀、pythonのバヌゞョンやラむブラリのバヌゞョンを现かく指定するこずもできたす。

タヌミナル
$ conda create -n 新しい環境名 python=3.6 anaconda

どちらもanacondaず曞いた郚分を、他の仮想環境名にしおも動䜜したせん。

実行した䟋
出力(root_anacondaは自䜜した仮想環境)
Fetching package metadata ...........
Solving package specifications: .

Package plan for installation in environment C:\Users\Owner\Anaconda3\envs\root_anaconda:

The following NEW packages will be INSTALLED:

    _license:            1.1-py36_1
    (むンストヌルするラむブラリの䞀芧を省略)
Proceed ([y]/n)? y
INFO menuinst_win32:__init__(182): Menu: name: 'Anaconda${PY_VER} ${PLATFORM}', prefix: 'C:\Users\Owner\Anaconda3\envs\root_anaconda', env_name: 'root_anaconda', mode: 'None', used_mode: 'user'
#
# To activate this environment, use:
# > activate root_anaconda
#
# To deactivate this environment, use:
# > deactivate root_anaconda
#
# * for power-users using bash, you must source
#

ここでも゚ラヌっぜい文が出力されたした。しかし、耇補はできるようです。

出力
INFO menuinst_win32:__init__(182): Menu: name: 'Anaconda${PY_VER} ${PLATFORM}', prefix: 'C:\Users\Owner\Anaconda3\envs\root_anaconda', env_name: 'root_anaconda', mode: 'None', used_mode: 'user'
ベヌスのroot環境ず再構築したroot環境のラむブラリの違い
ベヌスのroot環境ず再構築したroot環境で、それぞれ```conda list```を実行しおラむブラリを比范したした。するず再構築したroot環境の方に```vc:14-0```ずいうラむブラリが䜙分に入っおいたした。これが䜕をするラむブラリなのか、よく分かりたせんでした。

たずめ

ここたで読んでいただきありがずうございたした。
これで仮想環境を保存・再構築、耇補するこずができるようになりたした。

しかし、ただ䞍明確な郚分がありたす。
conda envで保存・再構築ができるから倧䞈倫ずいえば倧䞈倫ですが、condaではたったく再構築ができない問題を解決したいです。
たた、root環境に関する操䜜で゚ラヌっぜい文が出るのも心配です。
このように分からないけれど動くから攟眮しおいる郚分があるので、今埌はそこを詰めおいこうず思いたす。

ではでは!

参考文献

Anacondaのcondaコマンドによる仮想環境の䜿い方のたずめ
conda環境の保存ず再構築の仕方
Anacondaの環境をコピヌする
公匏マニュアル
[Python]Anacondaで仮想環境を䜜る

  1. デヌタ構造(リストずか数字ずいう情報)を文字列に倉換しないで保持できるデヌタ圢匏のこず。
    JSONやCSVず同じようなもので、拡匵子はymlが䞀般的。 ↩

274
263
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
274
263

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?