例題15-1:他人のPCでもダイジョーブ(多分)

注釈

  • ここで紹介した方法を用いてPortable PythonにVisionEggまたはPsychoPyを導入してZipファイルにまとめたものを Windows用Portable VisionEgg/PsychoPy に置いてあります。大学の計算機室のPCなど、PythonをインストールできないWindows機で作業したい場合に便利です。

A: 今回はWindows機にpythonをインストールせずにVisionEggを使ってみる。

B: うわ。部屋に入ってくるなりなんですか。

A: この何の計画もなく書き散らかしたページを講義に使おうとか作者のSが企んでいるんだな。で、あんまりにも無計画なんで困ってしまって今更整理しようとしているわけだ。

B: ははあ、毎度毎度困ったおっさんですね。

A: で、例題15では改めてVisionEggを使える環境の構築についていくつか補足しようというわけだ。

B: pytonをインストールせずにって使うって言うのは…そんなこと出来るんですか?

A: うむ。その名もずばりPortable Pythonというのがあってだな、USBメモリでWindows用pythonの実行環境を持ち歩ける。

Portable Python ( http://www.portablepython.com/ )

B: なんだ、インストールせずに使えるって言っても、pythonの実行環境は必要なんですね。

A: そりゃ当然だろ。実行環境なしに出来たら怖いわ。

B: それならありがたみがほとんどないような…。

A: いやいや、何を言うか。コンピュータ室のWindows、あれにはpythonが入っていないし、自分で勝手にインストールも出来ないだろ。USBメモリでpythonの実行環境を持ち歩けたら、ああいう端末でもVisionEggのプログラムを作って動作確認することが出来る。自宅にPCを持っていない学生さんもいるからな。学生さんが授業時間外に自分で作業できる環境を確保しないと、なかなか授業では扱いにくい。課題を出したり出来んからな。

B: ははあ。S先生もなーんも考えてないようで多少は考えてるんですね。

A: そんなわけでPortable Pythonだが、ちょっと準備が面倒くさい。2011/05/31の時点でPortable Pythonのトップページはこんな感じ。

../_images/15-1-01.png

A: で、この左上の部分にダウンロードへの直接リンクがある。Windows版VisionEggはpyopenglのエラーの関係でPython 2.5系で動かさないといけない。そこでPortable Python 2.5.4をクリックしてダウンロードする。

../_images/15-1-02.png

B: えー。一番古いバージョンじゃないですか。なんだかヤだなあ。

A: Python 2.5系じゃないと動かない重要モジュールはまだたくさんあるから、当分はPython 2.5系は使われ続けると思うぞ。とにかくダウンロードしたらファイルをダブルクリックして展開する。なんだか普通のアプリケーションみたいにインストーラーが立ち上がるからちょっとびっくりするけど、単にファイルを展開するだけなのでどこか適当な場所を指定して「Install」を押せばいい。あ、この段階ではUSBメモリに展開しないでまずハードディスク上に展開した方がいい。 遅くて泣きそうになるから

../_images/15-1-03.png

B: ハードディスクでも結構時間かかりますね。…あ、終わった。

A: 展開したディレクトリを開くと以下のようなファイルとディレクトリがある。これで準備の第一段階は完了。IPythonShell-Portable.exeを実行したらIPythonが起動するし、PythonShell-Portable.exeを実行したら普通のPythonインタプリタが起動する。PyScripterとSPEってのは 例題10-3 で紹介したspyderみたいな開発環境だ。このあたりを使うかどうかは好みでどうぞ。

../_images/15-1-04.png

B: IPythonとか最初からセットアップされているんですか。便利ー。

A: もうダウンロードした人は見たと思うけど、以下のパッケージがすでにセットアップされている。PILやNumpyといったVisionEggに必要なパッケージはちょっと古めのバージョンだけど導入済みだ。さらにscipyとmatplotlibも入っている。足りないのはpyopenglとVisionEggだけだ。

../_images/15-1-05.png

B: じゃあ、pyopenglとVisionEggをインストールすればいいんですね。二つだけならなら楽勝楽勝。

A: いや、それがちょっと…。

B: へ? 何か問題が?

A: 今まで出てきたパッケージのインストーラーは、Windowsのレジストリを参照してファイルを展開する位置を決めるんだ。だが、レジストリという言葉を聞いてピンと来る人もいるだろうが、Portable Pythonはレジストリを使用しない。そこでちょっと工夫が必要になる。

B: はあ。レジストリってのはよくトラブルの原因として聞きますね。いまいちどういうものなのかわかってないんですが。

A: レジストリの解説をし出すと脱線が長くなるので置いておくとして、正攻法でpyopenglやVisionEggをPortable Pythonにインストールするためには、Pythonのsetuptoolsの使い方を知っている必要がある。で、しかも適切なCコンパイラが必要だ。はっきり言って 面倒くさい

B: はあ、相当嫌そうな顔をしてますな。

A: そこで、ここでは邪道な方法を紹介しておく。いったん適当なWindows機にVisionEggをインストールしてしまって、そこからpyopenglとVisionEggのディレクトリをごっそりPortable Pythonにコピーする。

B: …それだけ?

A: それだけ。仮にWindows機のC:\Python25にPython2.5がインストールされていて、VisionEggを実行するために必要なパッケージがインストールされているとする。エクスプローラで C:\Python25\Lib\site-packagesというディレクトリを開いたら、そこにVisionEggというディレクトリと、OpenGLというディレクトリがあるはずだ 。これらのディレクトリを Portable Pythonを展開したディレクトリのApp\Lib\site-packagesにコピーする 。Libの他にlibsというディレクトリもあるので間違えないように。

B: Portable PythonのAppディレクトリとC:\Python25が対応しているんですね。

A: その通り。これでVisionEggを実行する準備は完了なので、あとはUSBメモリにPortable Pythonをコピーして、コンピュータ室のWindows機につないで実行すればいい。

B: うーん、なんだか強引に解決しましたって感じだなあ。

A: そうそう、Portable PythonのIPythonやらなんやらは、何故かWindows VistaやWindows 7には管理者権限が必要なプログラムとして判定されてしまう。シールドのアイコンが付いているだろ。

../_images/15-1-04.png

B: 言われてみれば。管理者権限が必要だったらコンピュータ室の端末では実行でいないと思うんですが。

A: Vistaや7のこのあたりの判定はちょっと調べてみただけではよくわかんなかったんだけど、とにかくPortable Python自体は管理者権限など必要ないプログラムだ。うっとおしいので、私は以下のようなバッチファイルをPortable Pythonのディレクトリと一緒に持ち歩いて、バッチファイルからIPythonを起動している。こうすればうっとおしいユーザーアカウント制御のダイアログが出てこない。

%~dp0PortablePython_1.1_py2.5.4\App\python.exe %~dp0PortablePython_1.1_py2.5.4\App\Scripts\ipython

B: 1行だけですか?

A: そ、1行だけ。これをIPython.batという名前で保存して置いて、以下のようにPortable Pythonと一緒にUSBメモリに放り込む。これでIPython.batをダブルクリックすればIPythonが起動する。最初の一回はウィンドウが出てくるまでなんだかやたらと時間がかかるので、気長に待ってほしい。

../_images/15-1-06.png

B: ファイル名はIPython.batじゃないと駄目なんですか?

A: 拡張子が.batなら何でもいいよ。

B: …ところで、なんだかUSBメモリに一緒に入っているR-Portableというのが気になるんですが。

A: ああ、これね。作者が「Rのポータブル版も見つけたのでテスト中」とか言ってたぞ。URLは http://sourceforge.net/projects/rportable/ だとさ。 確かWindowsのRはポータブル版じゃなくても普通にインストールしたやつをUSBメモリにコピーすれば使えるってRのFAQに書いてあったと思うが…。ええと、 R for Windows FAQの2.6 だな。

B: へえ、こんなの全然知りませんでした。

A: さて、そんなわけで例題15-1はこれで終了。「例題でもなんでもねえ」とか怒られそうな内容だけど。「例題」以外のカテゴリ作った方がいいんじゃないかね。

B: それ以前に順番がバラバラなので整理した方が…。

A: 違いない。んじゃ、次の例題15-2では最近リリースされたUbuntu 11.04にVisionEggをセットアップします。