はじめに
今までvirtualenvで環境構築をしていたのですが、Tensorflowのインストールで詰まり、Anacondaを使いたいと思ったのがきっかけです。
Anacondaを直接インストールする権限が無かったので、pyenv内のAnacondaを使用しようと思いました。
本当は、pyenvとAnaconda/minicondaを同時に使うのは大変なのであまりおすすめしません。
本記事は、Anaconda/minicondaを使いたいけど、インストールできない人向けの記事です。
公式URL
Anaconda: https://www.anaconda.com/
Miniconda: documentation: https://conda.io/docs/index.html
pyenv: https://github.com/pyenv/pyenv
環境
ソフト | version or 有無 |
---|---|
CentOS | 6.5 |
Python | Python 2.7.8 |
pyenv | ○ |
virtualenv | ○ |
Anaconda/Miniconda | ✗ |
pyenv-virtualenv | ✗ |
pyenv内のAnaconda | anaconda3-5.2.0 |
有無と書いてありますが、✗をつけているのは権限の関係でインストールできなかったものです。(頼めばいいだけの話ではあるのですが)
解決法
設定を書いたyaml fileを使用します。以下は例です。
name: myenv
dependencies:
- python=2.7
- beautifulsoup4
- h5py
- html5lib
- keras
- pandas
- pip
- pytest
- tensorflow
- pip:
- slackweb==1.0.5
yamlファイルを作成したら、以下のコマンドで環境の作成をして、その環境をactivateします。
$ pyenv local anaconda3-5.2.0
$ conda env create --file myenv.yaml
$ pyenv local --unset
$ pyenv local anaconda3-5.2.0/envs/myenv
環境をいったん作ったあとに一度pyenvの設定を解除して、pyenvで環境まで含めたものを選択するという、まどろっこしいことをしているのですが、
理由については後述します。(もっと良い方法をご存知の方がいらっしゃいましたら教えていただきたいです!)
環境を削除したいとき
$ pyenv local anaconda3-5.2.0
$ conda env remove --name myenv
anaconda3-5.2.0/envs/myenv に設定していると、削除できません。
解決法に至るまで
最初、以下のように、作成した環境をactivateしようとしていました。
$ pyenv local anaconda3-5.2.0
$ conda env create --file myenv.yaml
$ source activate myenv
pyenv: -bash: command not found
上記のエラーが出るのは、PyenvとAnacondaのactiveがバッティングしてしまうのが原因のようです。
このために解決法では一旦pyenvを抜けてから、pyenvでcondaで作った環境まで含めて指定するようにしています。
環境作成時にyamlファイルを作っておくといい理由
Pyenv内のAnaconda内の環境内(記事内の例では myenv)では、condaコマンドを使えません。
環境を作る際に、conda installを済ませる必要があります。
まとめ
Anaconda/Minicondaを直接インストールできるならその方が楽です。
Pyenv とAnacondaの両方を入れるのは、source activateが衝突してしまい、本当はあまり良くないと思うので、
本当に困ったときに参考にしてください。
参考URL
Creating an environment from an environment.yml file
conda env create
condaによるポータブルなPython環境構築のすすめ