Twitter-botを作ってみる(4日目)appengineでインストールされていないライブラリを使う

appengineでtwython使う

昨日までのつづき。今日はappengineに乗せてみる。

こんな感じで

from twython import Twython
class Index(webapp.RequestHandler):
    def get(self):
        tw = Twython(
            twitter_token = CONSUMER_KEY,
            twitter_secret = CONSUMER_SECRET,
            oauth_token = ACCESS_TOKEN,
            oauth_token_secret = ACCESS_TOKEN_SECRET)
        tw.updateStatus(status='Hello Twitter!!')

        path = os.path.join(os.path.dirname(__file__), 'index.html')
        self.response.out.write(template.render(path, {}))

ログ

from twython import Twython
ImportError: No module named twython

File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 1422, in __init__
raise IOError(errno.EACCES, 'file not accessible', filename)
IOError: [Errno 13] file not accessible: '/Library/Python/2.6/site-packages/twython-1.4.2-py2.6.egg'
INFO 2011-05-19 05:13:35,577 dev_appserver.py:4151] "GET /favicon.ico HTTP/1.1" 500 -

うーん、なんかtwythonライブラリにアクセスできてないっぽい

あー、あたりまえかgaeは外のライブラリ読めないよね。gaeで外のライブラリどうやって使うか調べてみる。

appengineでインストールされていないライブラリを使う方法

gaeのプロジェクトディレクトリの下にコピーしておけば良いっぽいので、そうしてみた。

File "/Users/suzuki/projects/gaeprj/twitterbot/twython/twython.py", line 19, in
import httplib2
ImportError: No module named httplib2

こんどはhttplib2が無いって言われた。それもコピーしておく。http://code.google.com/p/httplib2/

File "/Users/suzuki/projects/gaeprj/twitterbot/twython/twython.py", line 25, in
import oauth2 as oauth
ImportError: No module named oauth2

うー、、oauth2も置く。
http://code.google.com/p/oauth2/ からDLしようと思ったらおいてなかったので、自分のmacのeggを解凍してコピーすることにした。(eggファイルはzipでアーカイブされてるらしい)

今度はエラーでなかった。でtwitterを確認すると、おお!ようやくgaeで書き込み成功。