そのときのメモを書いておく。
1. numpyのバージョン
GAEはデフォルトでnumpyが用意されているが、これのバージョンは1.6.1しかしChainerでは1.9,1.10が前提のようなので、これは使えない。
実際に、1.6.1のまま動かそうとすると、numpyのfull関数がないとかでエラーが出た。
githubのソースを見る限り、1.6.1では確かにfullはない様子。
そのため、自前のライブラリとしてnumpyの1.10を用意し、GAEにデプロイする。
2. 自前ライブラリのデプロイ
デプロイ対象のアプリケーションのルート直下にlibという名称のファイルを用意する。
そのlib以下にnumpyをインストールする。
$ pip install -t lib numpy
chainerとchinerが必要とするh5pyもついでにインストールする
$ pip install -t lib h5py
$ pip install -t lib chainer
そして、同じくルート直下にappengine_config.pyという名称のファイルを作成し、下記の内容を記載する。
from google.appengine.ext import vendor # Add any libraries installed in the "lib" folder. vendor.add('lib')
3. SDKで実行
SDKで実行したところ、下記のエラーが出た。
File "<app path>\lib\numpy\core\__init__.py", line 14, in <module>
from . import multiarray
ImportError: cannot import name multiarray
ディレクトリを見てみるとmultiarrayはsoファイルでできたモジュールだった。
Google App EngineのドキュメントにははっきりとC extensionがだめと書いてあるので、おそらくこいつは動かないのだろう。
You can add any third-party library to your application, as long as it is implemented in "pure Python" (no C extensions) and otherwise functions in the App Engine runtime environment. The easiest way to manage this is with a ./lib
directory.
ということでここで諦めた。
pythonのバージョンも2.7だし、やっぱグーグルさん的にはもうGoogle App Engineに力入れる気ないのかなあ。
kentanさん
返信削除コメント失礼いたします。
standard environment環境にてchainerをインストールしようとしたのでしょうか?
それとも、
flexible environment環境ですか?
すみません。当時の環境が残ってないのでちょっと不明です。
削除改めて公式ドキュメントもみてみたのですが、GAEもだいぶ仕様というか、サービスのあり方が変わっているみたいで、私が試した時にそもそも、そのようなenvironmentの違いがあったのかも微妙なところですね。