入門 - python 外部ライブラリ おすすめ




ローカルWebアプリに推奨されるPythonライブラリ/フレームワーク? (7)

私はPythonで簡単なLOCALウェブアプリを作りたいです。

Webサーバーと「バックエンド」コードは、UIと同じシステム(最初はWindowsシステム)で実行されます。 私はそれが問題であることを疑うが、UIはグーグルクロム、HTML、CSS、JavaScriptとjQueryの典型的なWebishのコンボになるでしょう。

PythonベースのWebプログラミングフレームワークは多数ありますが、それらはすべて、多くのバックエンドインフラストラクチャを備えた高度で大規模なアプリケーションを構築するために設計されているようです。 私はその逆を望んでいます。非常にシンプルで軽量、そして簡単に自己完結型のもの - ローカルWebアプリケーションを作成/サポートするのに十分なWebサーバーとフレームワーク。

提案?


Djangoにはあなたのアプリケーションを完全にローカルでテストすることを可能にする内蔵のWebサーバが付属しています( localhost:8080か何かのようなものを通して)。 実際のところ、私はそれをサーバーにデプロイする前に完全なWebアプリケーションをローカルで実行するためにそれを複数回使用しました。 私はあなたがあなた自身の地元のウェブアプリの目的のためにそれを使用することができない理由はありません。 Djangoは大きく複雑であるように思われるかもしれませんが、このソリューションは自己完結型で実行が簡単です。

  1. Djangoをインストールする
  2. すぐにあなたにWebサーバーを動かす方法を示す素晴らしいチュートリアルを見てください。
  3. あなたのコードを書く

それはそれについてです。 他のマシンにデプロイするのも簡単です。特にvirtualenv場合はvirtualenvです。

大規模なWebフレームワークをまったく使用しBaseHTTPServerない場合は、 BaseHTTPServerを使用するためにGregのアドバイスに参加する必要があります。 以前は特殊なローカルアプリケーションに使用していましたが、正常に機能しており、これから期待されていることを行っています。 それはあなたがそれを必要とするならばあなたが全く特別な何かを造ることを可能にする非常に柔軟な解決策です。


Pylonsは簡単な設定ができれば非常に使いやすいので、何をしたいのかをよく知っておく必要があります。


ここでは、 web2pyが適切な解決策になると思います。 インストールは不要で、依存関係もありません(WebサーバーやSQLiteデータベースだけでなく、独自のPythonインタプリタも付属しています)。 アプリケーションをWindowsまたはMacのバイナリ (web2pyを含む) として配布することもでき、ユーザーはインストールすることなくローカルで簡単に実行できます。


たぶん、あなたはいくつかのデータベーステーブルで基本的なCRUD操作のための管理者インターフェースが欲しいです。 それならDjangoがあなたの最良の選択です。


標準ライブラリ内の非常にシンプルなサーバーはwsgiref.simple_serverです。

例は簡単に見えます( demo_appもモジュールの一部です)。

from wsgiref.simple_server import make_server, demo_app

httpd = make_server('', 8000, demo_app)
print("Serving HTTP on port 8000...")

# Respond to requests until process is killed
httpd.serve_forever()

私がこの質問をして以来、私はそのような「ローカルWebサーバー」アプリを一握りで書いてきました。 私は最終的な「どのフレームワークが最善か」という答えはありませんが、いくつかの洞察があります。

  1. シンプルまたはマイクロフレームワークは確かに良い選択です。
  2. 私はCherryPyとFlaskフレームワークを試しました。 Flaskは基本的な "AJAXサービングページを設定する"機能がFlaskで書くのがまったく簡単なので、単純さの点で明らかに勝者です。 CherryPyドキュメンテーションはしばしば不透明であり、そしてそのセットアップの複雑さは著しく高い。
  3. Flaskには満足していますが、見回し続けています。 私は特に他のの議論とこの並んでの比較を含めて、非常に高くレビューされているBottleを試してみたいと思いslideshare.net/r1chardj0n3s/web-microframework-battle試してみる価値があります。

私はこの目的のためにBaseHTTPServerを使用しました。 これは、Python標準ライブラリに組み込まれているWebサーバーであり、配信するコンテンツを完全に管理できます。

これはPythonの標準ライブラリの一部なので、プラットフォーム固有の設定について心配する必要はありません。 私は、Windows、Linux、およびMac OS Xシステムで同じローカルサーバースクリプトを変更せずに使用しました。

サンプルのコードは次のようになります。

import BaseHTTPServer

class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header("Content-type", "text/html")
        self.end_headers()
        self.wfile.write("Hello world!")

server_address = ('', 8080)
httpd = BaseHTTPServer.HTTPServer(server_address, Handler)
httpd.serve_forever()




self-contained