Skip to content

Instantly share code, notes, and snippets.

@tomykaira
Created March 26, 2014 16:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tomykaira/9787817 to your computer and use it in GitHub Desktop.
Save tomykaira/9787817 to your computer and use it in GitHub Desktop.

python

2と3が混在していて、かなりちがいます。相互運用性はないとおもっていいです。 Python 3 のほうが日本語の扱いが圧倒的にラクで直感的なので、こちらがおすすめです。

ふるいライブラリは 3 に対応してないですが、そういうのはメンテされていない証拠なので、つかうのを避けたほうがいいです。 (といいつつ、メジャーなものでも結構ある。こまる)

一部の Linux OS では Python 2 が標準インストールされていて、これを消したり上書きしたりするとぶっこわれます。 ユーザ環境でインストールするとか、 pyenv をつかうとか工夫してください。

Windows 上でもなんとか開発できそうです。

http.server

Python 2 では SimpleHTTPServer という名前でした。まだこちらの名前のほうが通りがいい。 正直に socket をつかって HTTPServer を実装している例です。 コードも丁寧に書かれているはずなので、勉強の参考にはなります。

しかし、 HTTP でウェブアプリを実装するにはすこしプリミティブすぎて面倒なので、次の WSGI を調べたほうがいいでしょう。

http://docs.python.jp/3.3/library/http.server.html http://hg.python.org/cpython/file/3.3/Lib/http/server.py

WSGI

Web サーバ(apache とか nginx)と Python 製の web アプリケーション(これからつくる)をつなぐの規格です。 これに準拠したコードを書くか、準拠したフレームワークを使うと、いろんな環境でポータブルにアプリケーションが動かせます。

WSGI のような仕組みは Ruby, Perl などにもあり、ひとつ知っておくと考え方もふくめ、いろんな場面で役立ちます。

Python の場合は本当に規格なので、ライブラリなどを使用する必要はありません。関数だけ実装しておけば OK。 HTTP の通信部分を実装しなくていいので、手間もへります。

http://wsgi.readthedocs.org/en/latest/ http://legacy.python.org/dev/peps/pep-0333/

つくりはじめるには http://gihyo.jp/dev/feature/01/wsgi/0001 をみるといいかも。

Django

いちばん?有名な Python の web application framework (WAF)。 フルスタック(いろいろやってくれる)フレームワークです。

フルスタックフレームワークは上手くのれないと手間ばかりかかります。 学習コストもとても高いです。

Pyramid

Django ほど機能はいらないから、もうちょっとライトなのがいいときは Pyramid がいいかもしれません。 View や asset(js, css とか) の管理まで担当してくれるそうです。

http://www.pylonsproject.org http://docs.pylonsproject.jp/projects/pyramid-doc-ja/en/latest/

その他の WAF

https://wiki.python.org/moin/WebFrameworks にいろいろのってます。

WSGI に準拠する場合は、もともと WSGI がいろいろやってくれるので、直接作成するのも無理じゃないです。

ライブラリを導入する方法

pip をつかうといいです。 pip install ライブラリ名。 pyenv で python をインストールすると pip まで入っています。 そこまで良い例とはいえませんが、 https://github.com/webpay/webpay-python がプロジェクト構成の参考になります。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment