HIT技術ブログ

株式会社ヒューマンインタラクティブテクノロジー技術者による技術ブログです。

Python Tornado をさわってみた。その1(環境構築)

nodejsを利用する場面が多かったのですが、最近Pythonに関わる場面も増えてきました。
Djangoやpyramidを少しかじったくらいの私ですが、nodejsっぽいPythonフレームワークはないかと探していましたが、Tornadoが近そうなのでこちらをさわってみたいと思います。
Pythonをインストールするところから始めたいと思います。

環境

Macで動作確認をしています。 homebrewとgitは事前にインストールしておいてください。Windows環境の場合はgitのみで大丈夫です。

  • macOS Sierra 10.12.2
  • homebrew
  • git

pyenvを使ってみる

Pythonの複数バージョンをインストールする場合に利用します。Windowsを利用している方は読み飛ばしてください。

インストール

homebrewでインストールします。

$ brew install pyenv

インストール後、環境変数を設定します。~/.bash_profileに書き込みます。

export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH

pythonのインストール

Pythonをインストールします。バージョンは任意です。

$ pyenv install 3.6.0
$ pyenv install 2.7.13

上記のコマンドを実行するとそれぞれのバージョンのpythonがインストールされます。
pyenv global x.x.x、pyenv local x.x.xまたは、pyenv shell x.x.xでバージョンの切り替えができます。
globalとすると全体に、localにするとそのカレントディレクトリに、shellにすると今使用しているシェルのpythonのバージョンを変更できます。

pyvenvで環境構築してみる

pyvenvを用いてpythonの実行環境を構築します。
pyvenvはPython3.3から標準で含まれています。ちなみにpyenvを利用した環境でpyvenvを実行すると

WARNING: the pyenv script is deprecated in favour of `python3.6 -m venv`

と表示される。pyvenvはいずれ廃止予定らしいです。

Python's pyvenv script deprecated · Issue #184 · yyuu/pyenv-virtualenv · GitHub

ので、「python3.6 -m venv」を実行してPythonの仮想環境を作成します。
作成したのち、venvを有効化します。
有効化したvenv内でpipで取得したパッケージが取得されます。

$ cd ~
$ mkdir .virtualenvs
$ python3.6 -m venv .virtualenvs/tornado
$ source .virtualenvs/tornado/bin/activate

venvを無効化する場合は、「deactivate」を実行します。

$ deactivate

Tornadoのインストールしてみる

Tornadoはpipを用いてインストールします。
pipはPython 2.7.9 以降、Python 3.4以降からデフォルトでインストールされます。

$ pip install tornado

公式サイトのドキュメントは下記のリンクです。
Tornado Web Server — Tornado 4.4.2 documentation

こちらに一通りの説明は記載されています。

ソースコード

公式ホームページに記載されているコードは下記の通りです。
実行すると「Hello, world」がブラウザに表示されます。

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

上記のソースコードをserver.pyに保存します。

$ cd ~/.virtualenvs/tornado
$ mkdir workspace
$ vi server.py

起動

server.pyをpythonで実行するだけです。

$ python server.py

ターミナルには何も表示されませんが、ブラウザで「http://localhost:8888」にアクセスすれば、"Hello, world"が表示されます。

次回は

今回は環境構築とTornadoのインストールのみでした。
tornado.web.RequestHandlerを説明したいと思います。REST APIの実装をしたいと思います。