車輪を再発明

プログラミングは趣味です。PythonとかGoogle App Engineとか触りますが、映画とかゲームとかの感想も書くかもしれません。。。

PyCharmを導入する GoogleAppEngine/Python環境編

PyCharmの有償版にはGoogleAppEngine/Python用のプロジェクトがあるようですが、今回は自分で環境を構築します。

前提

すでにGoogleCloudPlatformでプロジェクト作成済みとします。
Google Developers Console

GoogleAppEngineのSDKを準備する

Google Cloud PlatformのSDKは以下の手順でダウンロード、インストールできます

Google Cloud SDK — Google Cloud Platform

gcloudコマンドで、GoogleAppEngine用のSDKをダウンロードできます。

$ gcloud components update gae-python

GoogleAppEngine用のvirtualenvを作る

AppEngine用のvirtualenvを作成します。
その後、add2virtualenvコマンドを用いて先ほど準備したAppEngineのSDK内にあるパッケージをvirtualenv内で参照できるようにします。

$ mkvirutalenv appengine
(appengine)$ add2virtualenv /path-to-google-cloud-sdk/platform/google_appengine

これでSDK内にあるパッケージを参照できるようになります。
(これやらないと、PyCharmで編集していると、参照エラーが出る、タブ補完できない、などいろいろめんどくさいことになります。)

AppEngineでは以下のようなサードパーティーのパッケージも使えますので、必要に応じてvirtualenvに加えましょう。
Third-party Libraries in Python 2.7 - Python — Google Cloud Platform

例えばNumPyを使いたいのであれば、virtualenvにpipでインストールしましょう。

(appengine)$ pip install numpy

ビルドでこけてしまうようなら、apt-getでビルドに必要なライブラリをいろいろインストールした後再チャレンジしましょう。

プロジェクトを作る

作成したvirtualenvをインタープリターとして指定したプロジェクトを作成します。
プロジェクトはとりあえず、/home/taromaru/PycharmProjects/gae-test/に作ることにします。
f:id:taromaru-kun:20150215191258p:plain

空のプロジェクトができるので、あとはアプリケーションを作りましょう。
今回は、AppEngineのSDK内にあるdemos/python/guestbookをコピーしておきます。

開発サーバーの実行

開発サーバーの実行はターミナルからは以下のコマンドで可能です。

$ dev_appserver.py /home/taromaru/PycharmProjects/gae-test/

または以下のようにアプリケーションの設定ファイルを指定しても可能です。
Modulesを使う場合は、こういう指定になれておいたほうがいいかもですね。)

$ dev_appserver.py /home/taromaru/PycharmProjects/gae-test/app.yaml

ターミナルから実行するのもいいですが、ここは勉強のために、PyCharmから実行できるように設定します。

メニューの[Run]->[Edit Configurations...]をクリックすると、「Run/Debug Configurations」というウィンドウが出てくるので、
左上の「+」ボタンをクリックして、[Python]を選び、新しい実行設定を作ります。

f:id:taromaru-kun:20150215200215p:plain

working directoryにプロジェクトのディレクトリを指定しています。
sctiptはdev_appserver.pyへの絶対パスを、parametersとしてworking directoryからアプリケーション設定ファイルへの相対パスを記入し、適用します。

あとは、実行時にこの設定を選択すればOKです。

http://localhost:8080

にブラウザからアクセスできれば問題ないでしょう。

アプリケーションのアップロード

ターミナルからは以下のコマンドで可能です。
app.yamlのapplicationを自分のプロジェクトIDに変更しておくのをお忘れなく!

$ appcfg.py --oauth2 update /home/taromaru/PycharmProjects/gae-test/

設定ファイルを指定する場合は、以下のとおりです。

$ appcfg.py --oauth2 update /home/taromaru/PycharmProjects/gae-test/app.yaml

ミソは、--oauth2 オプションでしょうか。
最近追加された機能だと思うのですが、アプリケーションののアップロードに際して、OAuth2認証が走るようにできるオプションです。
初回はブラウザ上で認証が必要ですが、2回目以降は不要となります。
https://cloud.google.com/appengine/docs/python/tools/uploadinganapp#Python_Password-less_login_with_OAuth2

毎回メールアドレスとかパスワードとか入れなくてよくなりますし、携帯電話などによる二段階認証を設定しているアカウントでも特別な設定をすることなく認証が通ります。


こちらも同様に、PyCharmから実行できるようにしてみましょう。

f:id:taromaru-kun:20150215203925p:plain


とりあえず今日はここまで。