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

初学者が統計学、機械学習、R、Pythonの勉強の過程をメモっていくノート。

Spyder(PythonのIDE)を入れてみたところ、とても使いやすい

 Pythonを使う時、なんとなく、Canopy ExpressっていうIDEを使ってました。
 あまり深い理由はなく、オライリーの『Pythonによるデータ分析入門』でCanopy使いましょうって書いてあったり、IPythonのインストール解説ページにいくと、IPythonを使いたいなら単独で入れるのではなくAnacondaかCanopyのようにパッケージ化されたものを使うべしと書いてあった(リンク)からです。
 それで、とりあえず使えたから良いんですが、

  • スリープになるたびに不正終了としてエラーログをEnthoughtに送信するか聞かれる
  • デバッガを使おうとすると有料
  • スクリプトの特定部分を選択してその場で実行ってのができない(実行したい分だけコピペしてコンソールに貼れば実行できるけど、カーソルで選択した部分をcommand + enterで実行できる方がよい)


 など不満な点もあったので、いったんアンインストールして、試しにSpyderを入れてみたらえらく使いやすかったので、しばらくSpyderでいってみたいと思います。
 Python自体、超初心者なので、「乗り換え」みたいな大げさな話ではなく、色々試してみてる段階です。


 参考記事:
 いろいろ試した結果、pythonのIDEはSpyderに落ち着いた件--listen2the Silence


Canopyのアンインストール

 Spyderのインストールの前に、Canopyのアンインストールはやや注意が必要でした。手軽に削除というわけにはいかず、


 Uninstalling and resetting Canopy – Enthought Knowledge Base


 このページに書いてある手順を踏む必要があるようです。
 しかもこれはCanopyを一度アンインストールして再インストールしたい人向けに書かれてあるので、私はこの通りにやったわけでもないです。
 具体的には、上記ページの解説の「OS X」のところに従いつつもやや修正して、
 
 

  1. CanopyをPythonのデフォルトツールから外す
  2. Macを再起動
  3. Canopy.appを削除
  4. 「~/Library/Enthought/」「~/Library/Canopy」を削除。上記解説ページの手順だと、再インストールを想定してか、「Enthought」のディレクトリは残すと書いてあるけど、無視して根本から断ち切ることにした。
  5. 「locations.cfg」の削除も、「~/.canopy/」をまるごと削除することにした。
  6. ホームディレクトリにある「.bash_profile」「.profile」をテキストエディタで開いて、CanopyとかEnthoughtという単語が出てくるパラグラフを削除
  7. Macを再起動


 という順に作業しました。

AnacondaとSpyderのインストール

 AnacondaとSpyderを入れるのはかなり簡単でした。なお私はMacつかってて、OSはYosemiteです。


 Download Anaconda now! | Continuum
 ここでGraphical Installerってのをダウンロードしてインストールし、つぎに、


 Releases · spyder-ide/spyder · GitHub
 ここでSpyderをダウンロード・インストールしました。
 
 
 Spyderは、試しにPython2用のもの(Spyder-Py2)とPython3用のもの(Spyder)を両方インストールしましたが、ふつうに併用できるようです。併用してると、「このモジュールは2にはインストールしたけど3にはしてなかったっけ?」みたいな混乱が後々予想されますが。

じつはAnacondaだけ入れればOKだった。。。(2015.11.4追記)

 追記です。
 じつはAnacondaだけ入れておけば、その中にSpyderが埋め込まれているので、Spyder.appを別途インストール必要も、後述のようにインタープリタの紐付けを修正する必要もないことが分かりました。
 なので次のエントリで、いったん全部アンインストールして、Anacondaを入れなおしました。


statsbeginner.hatenablog.com



 従って、↓の内容はもはやあまり意味がないです。この方法でも使うことはできますが。


Spyderから動かすPythonインタープリタ等の変更

 1つ注意点があって、Mac版のSpyderを単にインストールしただけだと、全てが"Spyder.app"の中に梱包された材料で動くようです。
 理解して使う分には問題とまでは言えないでしょうけど、インタープリタはもちろん、ライブラリやモジュールも全部"/Applications/Spyder.app"の配下にブチ込まれているわけで、これは気持ち悪い。もともとインストールしてあったPythonとは無関係の世界がここに出来上がる感じです。せっかくこれまでpipとか使ってインストールしてたモジュール等はどうなんのと。
 というわけで、


 まずこの記事を参考に、
 Python Spyderで新しいモジュールが使用できない場合の対処法--listen2the Silence


 Preference > Console > Advanced settingsの一番上の項目で、Spyderが起動するPythonインタープリタを、もともと自分のMacに入れてたやつに紐付けしなおした(Spyder-Py2からはPython2、SpyderからはPython3を設定)。


f:id:midnightseminar:20151102123001p:plain


 次に上記参考記事では、PYTHONPATH managerでそれぞれのインタープリタが入っているディレクトリを指定しているのだが、これはべつにやらなくていいと思う。
 インタープリタを紐付しなおした時点で、次回起動時からはそのインタープリタに設定されてるPYTHONPATH(環境変数)やsys.pathが読み込まれるようになるので、いわゆる「pathは通ってる」状態で問題ないんじゃないだろうか。*1
 PYTHONPATH managerで何も追加しなくても、Spyder上のコンソールからsys.pathを確認してみると以下のようになる。

['', 
'/Users/ユーザ名/anaconda/lib/python34.zip', 
'/Users/ユーザ名/anaconda/lib/python3.4', 
'/Users/ユーザ名/anaconda/lib/python3.4/plat-darwin', 
'/Users/ユーザ名/anaconda/lib/python3.4/lib-dynload', 
'/Users/ユーザ名/anaconda/lib/python3.4/site-packages/Sphinx-1.3.1-py3.4.egg', 
'/Users/ユーザ名/anaconda/lib/python3.4/site-packages/setuptools-17.1.1-py3.4.egg', 
'/Users/ユーザ名/anaconda/lib/python3.4/site-packages', 
'/Users/ユーザ名/anaconda/lib/python3.4/site-packages/aeosa', 
'/Applications/Spyder.app/Contents/Resources/lib/python3.4/minimal-lib']


 一方、ターミナルから同じインタープリタを起動してsys.pathを確認すると、

['', 
'/Users/ユーザ名/anaconda/lib/python34.zip', 
'/Users/ユーザ名/anaconda/lib/python3.4', 
'/Users/ユーザ名/anaconda/lib/python3.4/plat-darwin', 
'/Users/ユーザ名/anaconda/lib/python3.4/lib-dynload', 
'/Users/ユーザ名/anaconda/lib/python3.4/site-packages', 
'/Users/ユーザ名/anaconda/lib/python3.4/site-packages/Sphinx-1.3.1-py3.4.egg', 
'/Users/ユーザ名/anaconda/lib/python3.4/site-packages/aeosa', 
'/Users/ユーザ名/anaconda/lib/python3.4/site-packages/setuptools-17.1.1-py3.4.egg']


 となっている。
 順番が若干違うのと、Spyderから見た場合は"Spyder.app"内のディレクトリが最後に加えられている。まずインタープリタのデフォルトのsys.pathを持ってきて、すこし改変して使わせているような感じなのだろうか。いずれにしても、内容的に、PYTHONPATH managerで何か追加しなければならないわけではないと思う。


 あとついでに、Preference > Console > Advanced settingsの中にあるPYTHONSTARTUPの設定というところで、"~/anaconda/pkgs/spyder-2.3.5.2-py34_0/lib/python3.4/site-packages/spyderlib/"という場所に置かれているscientific_startup.pyを設定しておきました。Pythonの起動時に自動的に読み込むモジュールとかが設定されてるやつです。
  Anacondaが提供してくれている、科学計算用のおすすめインポート一式という感じで、一部抜粋するとこんな感じ。

# Import modules following official guidelines:
try:
    import numpy as np
except ImportError:
    __has_numpy = False

try:
    import scipy as sp
except ImportError:
    __has_scipy = False

try:
    import matplotlib as mpl
    import matplotlib.pyplot as plt  #analysis:ignore
except ImportError:
    __has_matplotlib = False


 このほか、sysとかosなどもインポートされます。Pandasも入れたほうが良いような気がするので後で追記しようかな。
 AnacondaはPython3用にしかインストールしていないので、Spyder-Py2の方ではPYTHONSTARTUPの設定はそのままにしてますが、そのままだと"/Applications/Spyder-Py2.app"配下の何かを参照していて気持ち悪い面もあり、あとで調べて変更します。
 
 

Spyderを使う

 使えるようになりました。
 ↓のような3ペインで使い始めました。
 

f:id:midnightseminar:20151101174050p:plain

 
 たいへん打ちやすい気がします。
 この他、コーディングやファイル管理を支援する各種ツールのウィンドウを出すことが可能です。シェルについては、Python標準のシェルを操作する「Python Console」ってウィンドウと、IPythonを操作する「IPython Console」っていのが両方使えます。 

*1:PYTHONPATHやsys.pathについての説明はこの記事が分かりやすい。