せかいや

いまいるここを、おもしろく http://sekai-in-the-box.appspot.com/

【Google App Engine】【Python】 外部モジュールの読み込み方

ローカルでは正しくモジュールをimport できても、GAE Lanceherではエラーとなる

■ローカルでは正常

C:\PythonLib\python-twitter-1.0>python
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (I
Type "help", "copyright", "credits" or "license" for more informati
>>> import twitter
>>> api = twitter.Api('hoge','hoge'...)
>>> statuses = api.GetUserTimeline('hoge')

■GAE Lanceher ではimport エラー

INFO 2013-07-21 17:33:08,520 module.py:595] default: "GET / HTTP/1.1" 500 -
ERROR 2013-07-21 08:33:08,569 cgi.py:121] Traceback (most recent call last):
File "C:\Users\hoge\Desktop\iroironashi\main.py", line 3, in
import twitter
ImportError: No module named twitter

なんでだろーと嵌っていたけれど、他サイト(※1)を読んで納得。
twitterモジュール・その他はGAE上に自分でデプロイしないといけないということか。

■プロジェクトにlibフォルダを用意し、その中にモジュールをコピー
__init__.py も空ファイルとして作成する
f:id:sekaiya:20130721184406j:plain

■モジュール名変更
フォルダ名がpython_twitter-1.0のままではエラーが出たため、
python_twitter-1.0 ⇒ twitter に変更

■import文を修正

import twitter 
 ⇒from lib.twitter import twitter

twitterモジュールがインポートできた
だけれど、oauth モジュールでエラー。でも糸口が見えてきたかも!

import oauth2 as oauth
ImportError: No module named oauth2

■これで解決

import oauth2 as oauth

import lib.oauth2 as oauth


※1:外部モジュールが読み込めない件(その4)少し理解してきたかも
http://d.hatena.ne.jp/noazoh/?of=3