せかいや

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

Pythonを使ってTwitterBot (インポート編)

Pythonには「テンプレートシステム」という考え方があるらしい。

テンプレートの使用

コードに HTML が埋め込んであると、コードを追いにくくなり保守が困難です。このような場合はテンプレート システムを使用すると便利です。テンプレート システムは、アプリケーションのデータが出現する場所を示す特殊な構文を使って、HTML を別ファイルとして維持します。Python 用のテンプレート システムは、EZT、Cheetah、ClearSilver、Quixote、Django など、数多くあります。

https://developers.google.com/appengine/docs/python/gettingstarted/templates?hl=ja

これってようはMVC
先輩が「新しい技術に見えても、結局は古い技術の焼き直し」と言っていた意味がなんとなく分かる。
表す言葉が違うだけで考え方は同じだったり。

■驚いたところ
GAE提供のサンプルコードをいじっていたところ、不思議なエラーが発生。

1)OK

class Guestbook(webapp.RequestHandler):
def post(self):
greeting = Greeting()

2)エラーになる

class Guestbook(webapp.RequestHandler):
def post(self):
greeting = Greeting()

3)エラーになる

class Guestbook(webapp.RequestHandler):
def post(self):
\t\t greeting = Greeting()

if文などのブロック範囲はどうやって識別してるんだろう、と不思議に思っていましたが
「インデント量を揃える」ことで認識している。へー。

ステートメントブロックは、インデント量を揃えることによって記述します。いくつインデントしなければならない、というものではなく、 ブロックの最初のステートメントのインデントと、同じだけインデントしているステートメント群が、ブロックとみなされます。

http://python.keicode.com/lang/control-basic-rule.php

⇒この後も、好き勝手にインデントしていたらエラーになるなど。
JavaJavaScriptだとインデントはやりたい放題だったんだなー。意識したことなかった。


■モジュールインストールでこける
参考サイト(※1)をみながら必要なモジュールをインストール。でエラー。

C:\Windows\system32>python C:\PythonLib\python-oauth2-master\setup.py install
Traceback (most recent call last):
File "C:\PythonLib\python-oauth2-master\setup.py", line 2, in
from setuptools import setup, find_packages
ImportError: No module named setuptools

調べてみるとsetuptoolsというモジュールがそもそも必要なよう(※2)。
後続のdistributeをインストールしてみる。

C:\Python27\Scripts>easy_install.exe --version
distribute 0.6.49

distributeをインストールをするとうまくいきました。が、
oauth2のインストールがunknownで終了・・・。

C:\Python27\Scripts>python C:\PythonLib\python-oauth2-master\setup.py install
running install
running bdist_egg
running egg_info
creating oauth2.egg-info

zip_safe flag not set; analyzing archive contents...
httplib2.__init__: module references __file__
Adding httplib2 0.8 to easy-install.pth file

Installed c:\python27\lib\site-packages\httplib2-0.8-py2.7.egg
Finished processing dependencies for oauth2==unknown

不穏・・・。正しくインストールできたのかな。

Finished processing dependencies for oauth2==unknown

インストールできたかの確認方法は、どこを見ても見つからなかったので断念。

⇒その後 import twitter がエラーになったため、再度oauth2 のインストールを行うとうまくいきました。良かった。

twitter のimportでエラー

>>> import twitter
Traceback (most recent call last):
File "", line 1, in
File "twitter.py", line 63, in
import oauth2 as oauth
ImportError: No module named oauth2
>>> import oauth2
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named oauth2
>>> quit()

☆outh2 再インストール

C:\PythonLib\python-oauth2-master>python setup.py install
running install
running bdist_egg

☆oauth2インストールに成功

Using c:\python27\lib\site-packages\httplib2-0.8-py2.7.egg
Finished processing dependencies for oauth2==1.5.211

twitter のimportにも成功

>>> import twitter


※1:python-twitterを使ってTwitterBot開発
http://d.hatena.ne.jp/killinsun/20130606/1370542828
※2:Tracのインストール(Linux編)
http://d.hatena.ne.jp/torutk/20080614/p1

※3:Python/distribute,easy_installをWindows環境にインストールしてみる
http://hyokonia.tumblr.com/post/3733873984/python-distribute-easy-install-windows