Filed under: Python

Windows環境にweb.pyをインストールしてみた。

GAEだとエラーがでまくりんぐだったので、Windowsのローカル環境で開発することにしました。公開のことは後から考える!

とりあえず手順をば。

  1. このページからPython 2.5.4のインストーラをDLしてインストール
  2. 環境変数を忘れずに!→参考
  3. ここからweb.py-0.23.tar.gzをダウンロード(例:C:\webpy\)
  4. web.pyのチュートリアルを見ながらインストール。
  5.  cd c:\webpy
     python setup.py install
     
  6. インストールが終わったらチュートリアルでサンプルコードを作成
  7.  #code.py
     import web
      
     urls = (
         '/', 'index',
         '', 'index',
     )
      
     class index:
         def GET(self):
             print "Hello, world!"
      
     if __name__ == "__main__":
         web.webapi.internalerror = web.debugerror
         web.run(urls, globals(), web.reloader)
      
  8. コマンドプロンプトから実行。
  9.  python code.py
     
  10. http://0.0.0.0/8080 でHello, world!

どうもこのチュートリアルはWeb.py 0.2xの手順らしく、web.py0.3を入れたのが悪かったみたい。web.runの記述方式で弾かれてしまうみたいです。

とりあえずここまではできたので、引き続き頑張ってみる。ちょっと楽しくなってきたぞ。

(GAEで見たらやっぱりエラーがでるけど、それはおいおい考える。一応動くみたい→参照

GAEでWeb.pyを使おうとしたらエラー。

昨日の続き。

DjangoよりWeb.pyの方がいいよ!と教えて頂いたので、早速試してみた。

とりあえず適当なサンプルプログラムをGAEから実行してみたものの、エラーが発生しまくりんぐ。

作ったコード

 import web urls = 
     '/.*', 'view'
 )
 class view:
     def GET(self):
         print "Hello, world!"
 if __name__ == '__main__': web.run(urls) 
 

表示されるエラー

 Traceback (most recent call last):
   File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3245, in _HandleRequest
     self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
   File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3186, in _Dispatch
     base_env_dict=env_dict)
   File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 531, in Dispatch
     base_env_dict=base_env_dict)
   File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2410, in Dispatch
     self._module_dict)
   File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2320, in ExecuteCGI
     reset_modules = exec_script(handler_path, cgi_path, hook)
   File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2216, in ExecuteOrImportScript
     exec module_code in script_module.__dict__
   File "C:\Users\xxx\Dropbox\GAE\helloworldweb\helloworldweb.py", line 1, in <module>
     import web
 ImportError: No module named web
 

 

どうやらweb.pyがインポートできませんでしたってエラーなんだろうけど。

こういうエラーが発生するとかなりやる気が下がっちゃうんだよなぁ。

Rubyにしようかなぁ。

Pythonに挑戦中。

先日、会社からの帰り道でTwitterAPIを使ったサービスを思いついたので、さっそくGoogleAppEngine+Pythonを勉強しはじめてみました。

セットアップやサーバ代が無料ということでGAEをチョイス。Pythonを選んだのはJAVAよりは簡単かな?という浅はかな理由です(GAEはJAVAかPythonしか使えない)

TwitterサービスはおろかWeb系のスクリプト言語自体がはじめてなので、まずはTwitter APIとGAEでおもしろWebサービスを作ろう!を参考にしながらGoogle App Engine SDKとPythonをインストールしてみました。

サンプルプログラムをコピペするだけでなんとなく動いたのですが、それでは面白くないということでFizzBuzzを作ってみることに。



inum = input("END-Number: " )
 for value in range(1, inum):
     if value  % 3 == 0 and value % 5 == 0:
         print 'Fizz Buzz'
     elif value %3 == 0:
         print 'Fizz'
     elif value %5 == 0:
         print 'Buzz'
     else:
         print value


(Pythonはインデントでブロックの終端を判断する点が特徴らしいです。最初は括弧がないとなんとなく不安だったのですが、慣れてくると目障りな括弧がない分すっきり読めるのかもしれません)

コードのクォリティはさておき、とりあえず上記のコードをプロンプト画面から動かすことには成功しました。が、やっぱりWebブラウザでインプット→表示したい。初心者にも薦められるくらいだからそれくらい簡単にできるかな?と思っていたのですが、大間違い。HTMLとデータのやりとりを行うにはPythonのWebフレームワークというライブラリ?を使わないといけないとかなんとか。

何時間か調べてみたのですが、今日はこの辺りでタイムアップ。どうもDjangoWeb.pyがよさそうなことはわかってきたのですが…

HTMLメインならPHPでいいじゃんとか言われそうなんですが、そこはご愛敬。なんとかGAE+Pythonで2月中に形にできるよう、少しづつ頑張ってみたいと思います。