InvalidVersionSpecError: Invalid version spec: =2.7 のエラーでAnacondaが使えなくなった時の備忘録(mac)
anacondaで色々と開発をしていたのですがcondaに関するいくつかのコマンドが使えなくなりました。
解決方法を色々試したのですが、結局原因は解決できませんでした。
例えばconda updateコマンドを実行をすると、エラーが表示されます。
$ conda update -n base -c defaults conda
Solving environment: failed
InvalidVersionSpecError: Invalid version spec: =2.7
結論anacondaはアンインストールしてminicondaに乗り換えた
結論としては、私には復旧させることができませんでした。
Anacondaを再インストールしてもよかったのですが、簡易版のMinicondaで十分なのでそっちに乗り換えようと思います。
起きていた現象
conda createで新しく環境を立ち上げようと思った時に急にエラーが出ました。
起きていた現象としては、いくつかありますが・・・。
ANACONDA NAVIGATORはbusyのまま動かなくなりました。
数時間待っても変化なし。
$ conda install anaconda-clean
Solving environment: failed
InvalidVersionSpecError: Invalid version spec: =2.7
conda installで何かしらのパッケージをインストールしようとしても上記のエラーが出てなんともできず。
試したこと
$ conda update -n base -c defaults conda
Solving environment: failed
InvalidVersionSpecError: Invalid version spec: =2.7
updateは同様のエラーが出て、だめ。
他にも「conda config --remove channels conda-forge」などで解決したという書き込みも見ましたが、同様のエラーがでて無理でした。
原因?
https://github.com/conda/conda/issues/10618
今回起こった現象はcondaのissueとして登録がされていました。
issueの中では原因を突き止めたような方も見受けられましたが、私の英語力がなかったため、よくわかりませんでした。
日本語だと上記の記事で起きていることが近い気がします。
その人も結局Anacondaを再インストールしていたので明確な原因と対処方法はよくわからずじまいです。
Anacondaのアンインストール
普通にAnacondaをアンインストールすればいいだろうと思っていたのですが、Anacondaをアンインストールする際に使われるanaconda-cleanというパッケージがあります。
conda installが使えないため、anaconda-cleanが今回使えませんでした。
anaconda-cleanがインスールできない
conda clean -allで代用
書き出し
conda env export > temp.yml
作成した仮想環境を書き出しておきます。
私の場合スクラップアンドビルドを繰り返しているので、引き継げなかったとしても問題ないのですが、念の為行っておきます。
envでAnacondaのホームディレクトリを確認する
$ env
TERM_PROGRAM=Apple_Terminal
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/c8/k50s5_gs1dj168pbp_nwzc9r0000gn/T/
CONDA_SHLVL=1
CONDA_PROMPT_MODIFIER=(base)
TERM_PROGRAM_VERSION=445
OLDPWD=/Users/〇〇
TERM_SESSION_ID=3C88FFCE-589A-4349-BF5F-8CA9AF28D276
USER=〇〇
CONDA_EXE=/Users/〇〇(ユーザー名)/.pyenv/versions/anaconda3-5.3.1/bin/conda
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.isEkas1EUY/Listeners
PATH=/Users/〇〇(ユーザー名)/.nodebrew/current/bin:/Users/〇〇(ユーザー名)/.pyenv/versions/anaconda3-5.3.1/bin:/Users/〇〇(ユーザー名)/.pyenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands
LaunchInstanceID=3943BA86-61BD-46E4-9D8F-94CE89D06FD3
CONDA_PREFIX=/Users/〇〇(ユーザー名)/.pyenv/versions/anaconda3-5.3.1
__CFBundleIdentifier=com.apple.Terminal
PWD=/Users/〇〇(ユーザー名)
LANG=ja_JP.UTF-8
XPC_FLAGS=0x0
XPC_SERVICE_NAME=0
PYENV_SHELL=bash
SHLVL=1
HOME=/Users/〇〇(ユーザー名)
CONDA_PYTHON_EXE=/Users/〇〇(ユーザー名)/.pyenv/versions/anaconda3-5.3.1/bin/python
LOGNAME=〇〇(ユーザー名)
CONDA_DEFAULT_ENV=base
SECURITYSESSIONID=186b1
_=/usr/bin/env
これも念の為出力しておいて控えておきます。
Anaconda-cleanが使えないので手動でフォルダを削除
$ rm -r ~/.anaconda
$ rm -r ~/.conda
$ rm -r ~/.keras
$ rm -r ~/.matplotlib
$ rm -r ~/.pyenv
消していいファイルかわからないのでバックアップを取ってから作業します。
私が削除したフォルダは上記の5つです。
これらのファイルは隠しファイルになっているので、rm -r を使わないと削除できません。
保存先も人によって異なるため、env コマンドで保存先を確認しておくようにしましょう。
当然ですが、隠しファイルになっているためfinderで確認するには「command + shift + .」を押します。
.bash_profileの中身を見てみるが・・・、どこを消して良いのかわからないので無視
$ cat ~/.bash_profile
eval "$(pyenv init -)"
. /Users/〇〇(ユーザー名)/.pyenv/versions/anaconda3-5.3.1/etc/profile.d/conda.sh
conda activate
# nodebrew
export PATH=$HOME/.nodebrew/current/bin:$PATH
bash_profileの中にAnacondaのパスが通っているらしいのだが・・・catで中をみても書いてあるように見えません。
他のサイトを読むと、bash_profileとzshrcを変更しているが、今回は見送り。
もしもminicondaを入れた後に問題が出たらその時に対処しようと考えました(結果的に問題なかった様子)
アプリケーションにあるAnaconda-Navigatorを消す
手動でフォルダを削除した後は、アプリケーションフォルダにある、Anaconda-Navigatorを右クリックでゴミ箱に入れて完了です。