mathjax

2013年9月17日火曜日

Windows環境における、Pythonインストール環境の現状認識

Windows環境における、Pythonインストール環境の現状認識

Pythonを科学分野で使うには、様々なサードパーティのパッケージが必要となります。これらを一つ一つ探してインストールするのは面倒ですが、幸いな事にまとめて簡単にインストール、アップデートすることができるフリーの環境が幾つも公開されています。(以上、9/19 追記)
個人的に試用してみての意見を記録しておきます。おそらく半年も経てば違う意見になると思います。そのくらい、各ソフトの開発が高速で進んでいるからです。

  • Windows32bit or 64bit?: 今や販売されているほとんどのPCは64bitシステムだろうと思います。私自身はまだ32bitを使っています。32bitではPythonXYというインストールパッケージが使えます。少数かもしれませんが、32bitの人はこれでも良いかもしれません。ただし、ipythonのバージョンが未だに古いので、私は今は使っていません。pipを用いれば、アップグレードは簡単ですが、多数の64bitの人達と異なる環境になることを避けたいという意図もあります。
  • Python2.7 or 3.3?: 現状での3.3の問題点は、Spyderがまだ対応していないという事です。Experimental Releaseというのが出ていますが、まだ安定版ではありません。Windows環境においては、長いスクリプトを書く場合にはSpyderが一番使いやすい開発環境だと感じているので、この一点で2.7を勧めたいと思います。もし、Spyderのpython3.3対応の安定版がなかなか出ないのなら、他の開発環境を模索する必要があると思います。その場合にはIpython Notebookもその候補に入るでしょう。
  • Winpython or Anaconda?: Winpythonはpython2.7版、3.3版を独立に出していますが、Anacondaはpython2.7をインストールした後にpython3.3を追加する必要があります。(しかし、Spyderの3.3対応版が出る頃に前後して、3.3を最初からインストール可能なAnacondaのバージョンが公開される可能性もあります。)WinpythonのメリットはWindows環境に特化しているので、使い方がWindowsユーザにわかりやすい事、また、Ipython、IDLE、IpythonNotebook、SpyderなどがExeファイルやBatファイルとしてインストールされることがあります。また、Anacondaの環境ではSpyderの動作に多少の問題があるようです。Anacondaの方が様々なシステムに対応しているためか、Web上に情報が多い気がしますので、Anacondaの更なるバージョンアップを期待しつつ、現状ではWinpythonの方がわずかに便利な気がしています。
  • Winpythonのpython2.7版ではipython1.1(最新版)がインストールされませんが、Winpython Control Panelを用いれば、アップグレードしてくれます。ダウンロードサイトから ipython-1.1.0.tar.gz をダウンロードして、ドラッグアンドドロップする必要があります。また、登録と拡張子(.py)に対する既定のプログラム(python.exe)の設定、環境変数Pathにインストールディレクトリ内のipython.exeがあるディレクトリ(例えば、C:\WinPython-32bit-2.7.5.3\python-2.7.5\Scripts)を追加することをお勧めします。Ipython Notebook.exeのあるディレクトリ(例えば、C:\WinPython-32bit-2.7.5.3)はPathに設定しません。理由は次に述べます。
  • Winpythonは元々がインストールフォルダの内部だけで読み書きを完結しようとするプロジェクトです。その為か、インストールフォルダにある"Ipython Notebook.exe"はデフォルトのディレクトリがカレントディレクトリではなくてC:\WinPython-32bit-2.7.5.3\python-2.7.5\Scriptsというような場所に設定されてしまいます。通常の用途ではこれは却って不便なので、C:\WinPython-32bit-2.7.5.3\python-2.7.5\Scriptsのipython.exeを使用します。いずれにせよ、ipython notebookと打ち込めばipython notebookが起動する事には変わりません。ipython.exeはnbconvertやprofile createでも必要になります。
  • 少し話題がそれますが、Python2.7と3.3の一番身近で大きな違いはprint文の有無です。3.3ではprintは単なる関数なので、print()とする必要があります。近々python3.3に移行する事を考慮し、先頭にfrom __future__ import print_functionを入れておく事をお勧めします。

1 件のコメント: