StatsBeginner: 初学者の統計学習ノート

統計学およびR、Pythonでのプログラミングの勉強の過程をメモっていくノート。たまにMacの話題。

Macに入れた各種Pythonを全部アンインストールしてAnacondaを入れなおす

Pythonいろいろ入れすぎた

 Python3を単独で入れてみたり、Canopyを入れたりAnacondaを入れたり、Spyderを入れたらその中にもPythonが入っていたり・・・と、わけがわからなくなってきたので、いったんMacに標準で入っているもの以外は全部アンインストールして、Anacondaを基本にすることにしました。
 Spyderも、前のエントリではSpyder単独でインストールしたのですが、Anacondaにパッケージされたものを使えばいいことが判明したので、今のうちにやり直したい。

Apple が提供している Python は /System/Library/Frameworks/Python.framework と /usr/bin/python にそれぞれインストールされています。これらは Apple が管理しているものであり Apple やサードパーティのソフトウェアが使用するので、編集したり削除してはいけません。

4. Macintosh で Python を使う — Python 2.7.18 ドキュメント


 と言われるように、"/System/Library/Frameworks/"配下のPythonについては残しておくことにします。
 ちなみにこのOS X標準のPythonを動かすためのコマンドは、"/usr/bin/"に入っており、これらも削除せずに残します。
 
 
 一方、自分でインストールしたPython(たとえばOS Xに標準では入っていないPython3とか)ってのはどこに入っているかというと、"/Library/Frameworks/Python.framework/"の中です。コマンドは、"/usr/local/bin/"の中にある。
 また、私の場合はこれの他に、Canopyの中に入っているPythonとAnacondaに入っているPythonとSpyder.appの中に入っているPythonがあった。それぞれ、"~/Library/Enthought/"及び"~/Library/Canopy"、"~/anaconda/"、"~/Applications/Spyder.app/"及び"~/Applications/Spyder-Py2.app/"の配下に置かれているやつです。Canopy関係のものは前のエントリで一掃してあるけど。
 
 
 以下、いろいろ削除しまくりますが、消してはいけないものを消してる可能性もあります。
 私は、なんか不具合が起きたらTimemachineで元に戻せばいいだろぐらいに思ってるので気軽にやってるのですが、バックアップ取らずにやるのはやめたほうがいいと思います。
 今のところ、何も問題は起きてないです。一瞬、bashの環境変数がキャッシュされてていくつかのコマンドが無効と言われましたが、後述の通りターミナルを再起動するか、

$ hash -r

で削除すればOK。


いろいろ削除していく

 さてまず自分で入れたPython3とかがあるので、これを消します。


 "/Library/Frameworks/Python.framework"


 を思い切ってまるごと削除。そして


 "/Library/Python/"


 も消す。
 次にこれらに関連するコマンド("/usr/local/bin/"内にある)を削除するんですが、何を削除すればいいのかはターミナルでlsとgrepを組み合わせて探す。

$ ls -l /usr/local/bin/ | grep Python
lrwxr-xr-x  1 root    wheel        66 10  1 01:24 2to3 -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/2to3
lrwxr-xr-x  1 root    wheel        70 10  1 01:24 2to3-3.5 -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/2to3-3.5
lrwxrwxr-x  1 root    admin        78 10  1 01:24 easy_install-3.5 -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/easy_install-3.5
lrwxr-xr-x  1 root    wheel        67 10  1 01:24 idle3 -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/idle3
lrwxr-xr-x  1 root    wheel        69 10  1 01:24 idle3.5 -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/idle3.5
lrwxrwxr-x  1 root    admin        66 10  1 01:24 pip3 -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/pip3
lrwxrwxr-x  1 root    admin        68 10  1 01:24 pip3.5 -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/pip3.5
lrwxr-xr-x  1 root    wheel        68 10  1 01:24 pydoc3 -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/pydoc3
lrwxr-xr-x  1 root    wheel        70 10  1 01:24 pydoc3.5 -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/pydoc3.5
lrwxr-xr-x  1 root    wheel        69 10  1 01:24 python3 -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/python3
lrwxr-xr-x  1 root    wheel        72 10  1 01:24 python3-32 -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/python3-32
lrwxr-xr-x  1 root    wheel        76 10  1 01:24 python3-config -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/python3-config
lrwxr-xr-x  1 root    wheel        71 10  1 01:24 python3.5 -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5
lrwxr-xr-x  1 root    wheel        74 10  1 01:24 python3.5-32 -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5-32
lrwxr-xr-x  1 root    wheel        78 10  1 01:24 python3.5-config -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5-config
lrwxr-xr-x  1 root    wheel        72 10  1 01:24 python3.5m -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5m
lrwxr-xr-x  1 root    wheel        79 10  1 01:24 python3.5m-config -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5m-config
lrwxr-xr-x  1 root    wheel        68 10  1 01:24 pyvenv -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/pyvenv
lrwxr-xr-x  1 root    wheel        72 10  1 01:24 pyvenv-3.5 -> ../../../Library/Frameworks/Python.framework/Versions/3.5/bin/pyvenv-3.5


 ここで出てきた"2to3"以下を全部消します。


 Spyderについては、Python3用の"Spyder.app"とPython2用の"Spyder-Py2.app"を両方入れていたので、両方消すことにします。
 AppCleanerで探索すると、


 "/Applications/Spyder.app"
 "/Applications/Spyder-Py2.app"


 の他に関連ファイル、ディレクトリとして、


 "/private/var/db/BootCaches/C70FF7C7-CA68-4BBA-A7BB-AA9ABD504ADB/app.org.spyder-ide.playlist"
 "~/Library/Saved\ Application\ State/org.spyder-ide.savedState"
 "~/Library/Preferences/org.spyder-ide.plist"


 が挙げられたので、これらを全部消します。


 次に、Anacondaを削除します。Anacondaの公式サイトにも書いてあるように、"~/anaconda/"ディレクトリをまるごと削除すればOK。[2023.4.2追記]今は、ターミナルで

conda install anaconda-clean
anaconda-clean --yes

とするらしい。


 そしてSpyderの設定関係のファイルが入っている、"~/.spyder2"、"~/.spyder2-py3"も削除。これらは、Spyder.app等を入れた時にできたものだと思ったのですが、後で試したらAnacondaの中に入っているSpyderを起動した時にも作成されるもののようです。それはともかく、削除。
 "~/ipython/"も削除。
 何も入ってないけど"~/continuum/"も削除。
 
 
 次に、"~/.bash_profile"をテキストエディタで開いて、

# Setting PATH for Python 3.5
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}"
export PATH

# added by Anaconda3 2.3.0 installer
export PATH="/Users/ユーザ名/anaconda/bin:$PATH"


 という記述を削除。これらは、Python3.5を独自インストールした時と、Anacondaをインストールした時に書き込まれた、bashのPATH環境変数にパスを追加するための記述ですね。


 "~/.bash_profile.pysave"
 "~/.bash_profile-anaconda.bak"


 というバックアップもあったので消しました。これらは、PATH環境変数への追加を行った際に、それ以前のbash_profileを自動でバックアップしてたものですね。
 bash_profileが書き換わっているので、いったんターミナルを終了してbashを再起動します。
 PATH変数を確認すると、

$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/texbin


 となっており、さっき消したパスがなくなっていることが分かります。

Anacondaを改めてインストール

 さて、改めてAnacondaをインストールします。
 Anacondaさえ入れておけば、Pythonもインストールされるし、科学計算に使われる各種ライブラリや、pipやIPythonやSpyderも一気にインストールされます。
 やることは単に、
 
 
 Anaconda | Anaconda Distribution
 ここへ行ってOS X用のインストーラをダウンロードし、インストールするだけですね。


 インストールするとbashのPATH環境変数に"~/anaconda/bin"が追加され、各種コマンドはそこに置かれています。
 モジュールは"~/anaconda/lib/python3.5/site-packages"などにインストールされます。 
 
 
 インストール後、Launcher.appのショートカットがデスクトップに置かれますが、これは削除して私はDockに置きました。
 


 
 
 では起動します。



 
 
 Spyderを選択します。
 

 
 起動できました。
 Spyder.appを入れた場合に比べて、少し起動が遅いような気はします。AnacondaのLauncher起動とあわせて、私のMacBook Air(2012年のもの)で20〜30秒かかりますね。iMacだと、少し早いような気がしたりしなかったりというレベルです。
 とりあえず使えるので満足です。


 (2015.11.6追記)
 ブコメで
http://b.hatena.ne.jp/entry/270654221/comment/pirutyb.hatena.ne.jp
 というアドバイスを頂いたので、あとでためしてみます。ありがとうございます。pyenvからAnacondaを入れることもできるみたいだし。


 なお本エントリは、そういうツールを使わずに既に無秩序に色々入れてしまったのを掃除するという目的の作業でした。