PsychoPy + Jupyter Notebook + pip
PsychoPyの情報に関心のあるかたは、twitterで情報を発信しています。
PsychoPyにはCoderがついており、それを使ってPhythonのコードを記述して実行することができますが、ちょっと使い勝手が悪いです。そこで、Jupyter Notebookという開発環境を導入して、そこでPsychoPyを動かす方法について説明します。
基本的には、
https://qiita.com/mytk0u0/items/8bf1b2c061d454b2ffdc
に書かれている通りなのですが、ここを読んでも Jupyter NotebookからPsychoPyを動かせなかったよ、という人向けです。
また、スタンドアローンのPsychPyをインストールしただけでは、pipコマンド(パッケージ管理)を使えないのですが、以下の作業を行うことでpipコマンドが使えるようになります。
Anacondaのインストール
公式サイトから、Anacondaをインストールします。基本的に最新のバージョンをダウンロードすればよいはずです。
Windowsであれば Anaconda Powershell Promptを、Macであればターミナルを開きます。
Windowsの場合は注意が必要で、Anaconda Powershell Promptを管理者として実行する必要があります。Anaconda Powershell Promptを右クリックして「管理者として実行する」を選択してください。
次のように入力して、仮想環境を構築します。python=3.6 のように利用したいpythonのバージョンを指定することもできます。
conda create -n psycho python (エンターキーを押して実行します)
次に作成した仮想環境をアクティベートします。ここでは仮想環境の名前を psycho としています。名前は create で作成したものを指定してください。
conda activate psycho
PsychoPy と Jupyter をインストールします。condaコマンドと同様に pip コマンドを使用します。この作業にはかなり時間がかかります。
pip install psychopy jupyter
インストールが終わったら、Jupyter Notebookを起動します。
jupyter-notebook
Windowsでは自動的に jupyter-notebookが起動せず、次のような画面になるようです。指定されたとおりに、file:// から始まる行をコピーして、ブラウザ(Edge, Chrome, Firefoxなど)のアドレスバーに貼り付けてください。file:// から始まる行をコピーするには、行を選択している状態で Ctrl + C を押すか、Anaconda Powershell Prompt のタイトルバーを右クリックして「編集」→「コピー」とします。
補足:condaで仮想環境を作ることにどういう意味があるのかというと、仮想環境ごとにバージョンの異なるPython(PsychoPy)をインストールできるのです。バージョンが変わると文法が変わったりということがあるので、複数の環境を作れるというのはメリットです。
さて、Jupyter Notebookが起動したら、新規にファイルを作成してみましょう。(Windowsで新規にファイルが作成できない場合、Anaconda Powershell Promptを管理者として実行していない可能性があります)
新規にファイルを作成すると、pythonを実行できる状態になっています。例えば、1+2の計算をしてみましょう。以下のように入力して、shiftキー+enterキーを押してください。答えが返ってくるはずです。
このように、Jupyter Notebookでは、実行したい部分(cellと呼ばれます)だけを実行することができます。プログラムを作っている途中で、変数の中身を確認できるのでとても便利です。
続いて、いよいよPsychoPyを使ってウィンドウを表示してみましょう。
以下の画面を参考に入力してください。新規にセルを挿入するには「+」のアイコンをクリックします。win.close() を別のセルに記述することに注意してください。
2番目のセル(ln [2])だけを実行すると、ウィンドウが表示されるはずです。
そのあと、3番目のセル(ln [3])を実行してウィンドウを閉じてください。
以上で解説は終わりです。次のステップとしては、
https://qiita.com/snishym/items/8b52db0d901cf5744463
の記事がお勧めです。
PsychoPyの情報に関心のあるかたは、twitterで情報を発信しています。