pyenvで作成した環境を消す

うまくインストールできないライブラリがあり、
pipで入れたり消したり、condaで入れたり消したりとやっていたら何やら全体的に環境がおかしくなってしまいました。
(またかよという感じですが。)

しかたがないので、その環境は消して作り直すことにしました。
pyenv uninstall で環境は消せます。
参考 : pyenv uninstall


# 確認
$ pyenv versions
  system
* anaconda3-5.2.0 (set by /Users/******/.pyenv/version)

# 利用するpythonの環境をsystemのものに戻す。
$ pyenv global system
$ python --version
Python 2.7.10

# 不要になった環境を消す
$ pyenv uninstall anaconda3-5.2.0
# もう一度入れ直し
$ pyenv install anaconda3-5.2.0
$ pyenv global anaconda3-5.2.0
$ python --version
Python 3.6.5 :: Anaconda, Inc.

あとはこのブログで pip で検索して、うまくインストールできていたものを順に入れていけば元に戻るはず。
そもそも、anacondaで作った環境でcondaではなくpipを使ってるのがトラブルの原因でもあるのですが、
condaとpipの違いとか使い分けとか十分理解できてないので、どうしてもpipの方使っちゃいます。
この辺りはいつかしっかり勉強したい。

Macにpyenvとanacondaをインストールする

Mac book Pro のOSをMojave にアップデートして以来、Homebrew関係の環境がおかしくなってしまっているので、最近環境を作り直しています。
その一環でpyenvも入れ直したので記事にしておきます。

まず前提として、pythonには2系と3系があり、macに標準で入っているのは 2系です。


$ python --version
Python 2.7.10

これはOSも使っているそうで、直接このpythonのバージョンをあげるのは良くないこととされているので、
pyenvというツールを使って、独立した環境に3系のpythonを入れます。
また、機械学習等に使うのが目的なので、便利なライブラリが同梱されたディストリビューションである、
Anacondaを使います。

pyenvの導入手順は リポジトリのReadmeの該当箇所を参考に、以下のコマンドを順に実行します。


$ brew update
$ brew install pyenv
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
$ exec "$SHELL"

.bash_profile への initの追記についてですが、
shell configuration fileの最後に書けと書いてありますので、
今後.bash_profile ファイルを編集するときにこの後ろに何か書いてしまわないように、注意書きか何かコメントしておきましょう。

Please make sure eval “$(pyenv init -)” is placed toward the end of the shell configuration file since it manipulates PATH during the initialization.z

pyenvが入ったら、Anacondaの導入です。 下記コマンドで、インストール可能なバージョンが一覧表示できます。


$pyenv install -l
-- 略 --
  anaconda3-5.1.0
  anaconda3-5.2.0
  anaconda3-5.3.0
  anaconda3-5.3.1

今回は anaconda3-5.3.1 を導入します。


$ pyenv install anaconda3-5.3.1

さらに、導入したバージョンを利用するように設定して、確認します。


$ pyenv global anaconda3-5.3.1
~$ python --version
Python 3.7.0

昔の Anacondaは version表示するとその名前が出てきた覚えがあるのですが仕様が変わったのかもしれませんね。