Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
58
Help us understand the problem. What is going on with this article?
@qoAop

PythonとFlaskでWebサーバを立ち上げる

More than 1 year has passed since last update.
  • 単体のPythonスクリプトとか、GoogleAppEngineで簡単なプログラムを動かしたことはあるんですが、単体でWebプログラムを動かしたことはないのでやってみることにします。

環境構築

  • いろんなところからのコピペなので余分な作業があるかもしれません。
  • 環境はMac(El Capitan)です。
  • brewとpipコマンドは以前に入れてました。

pyenvのインストール

  • pythonのバージョン切り替え環境です。ユーザーディレクトリにpython本体がインストールされます。
% brew link autoconf pkg-config
% brew install pyenv
% brew install pyenv-virtualenv
  • /usr/local/以下の書き込みが禁止されてる場合には所有権等を変更してください。

virtualenvのインストール

  • 環境ごと仮想化する(?)コマンドらしいです。
  • virtualenvコマンドはpython2系だけのようで3系は別コマンドだそうなんですが、とりあえずvirtualenvで
%  pip install virtualenv

pythonの設定

環境変数

  • そのままだと、システムのpythonを使ってしまうのでpyenvのpythonを使うように環境変数を変更します。
  • 私はzshなので.zshrcに書いてますが、標準なら.bash_profileとかに書いてください。
% echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
% echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
% echo 'eval "$(pyenv init -)"' >> ~/.zshrc

各バージョンのインストール

  • とりあえず2.7.11と3.5.1というバージョンをインストールしてみます。
% pyenv install 2.7.11
% pyenv install 3.5.1
  • インストールの確認です。
% pyenv versions                                                                           [~]
* system (set by /Users/user/.python-version)
  2.7.11
  3.5.1
  • system設定に従う、明示的に2.7.11、3.5.1という3つがでてきます。

プログラムの設定

  • まず、システムを動かすプログラムディレクトリをつくってそこに移動します。
% cd /[path]/proj
  • ここで、virtualenvコマンドで仮想の環境を生成します。
% virtualenv testapp
  • /[path]/proj/testapp <- これが環境ごっそりなプログラムフォルダになります。

  • testappにある仮想環境に切り替えます。シェルにも(testapp)と付くので切り替わったのがわかります。

% source testapp/bin/activate
(testapp) [user]%    

ライブラリのインストール

  • Flaskというを入れます。
(testapp) [user]% pip install Flask

Collecting Flask
  Using cached Flask-0.11.1-py2.py3-none-any.whl
Collecting click>=2.0 (from Flask)
Collecting Werkzeug>=0.7 (from Flask)
  Using cached Werkzeug-0.11.10-py2.py3-none-any.whl
Collecting Jinja2>=2.4 (from Flask)
  Using cached Jinja2-2.8-py2.py3-none-any.whl
Collecting itsdangerous>=0.21 (from Flask)
Collecting MarkupSafe (from Jinja2>=2.4->Flask)
Installing collected packages: click, Werkzeug, MarkupSafe, Jinja2, itsdangerous, Flask
Successfully installed Flask-0.11.1 Jinja2-2.8 MarkupSafe-0.23 Werkzeug-0.11.10 click-6.6 itsdangerous-0.24

(testapp) [user]% pip list
click (6.6)
Flask (0.11.1)
itsdangerous (0.24)
Jinja2 (2.8)
MarkupSafe (0.23)
pip (8.1.2)
setuptools (23.0.0)
Werkzeug (0.11.10)
wheel (0.29.0)

こんな感じでファイル群ができました。

(testapp) [user]% tree -L 2
.
└── testapp
    ├── bin
    ├── include
    ├── lib
    └── pip-selfcheck.json

4 directories, 1 file

こんなプログラムを置きます。

hello.py
# coding: utf-8

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

@app.route('/ja')
def hello_world_ja():
    return 'こんにちは 世界!'

if __name__ == '__main__':
    app.run()

  • ルールがまだ良くわからないのでこんなapp/hello.pyに置いてみました。
(testapp) [user]% tree -L 3                                              [~/Desktop/python-dev/proj]
.
└── testapp
    ├── app
    │   └── hello.py
    ├── bin
    ├── include
    ├── lib
    └── pip-selfcheck.json

実行します!

(testapp) [user]% python testapp/app/hello.py
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
  • 5000ポートで動いたようです。

動作確認

  • ブラウザでもいいですけど、もうひとつターミナル開いて確認します。
% curl http://localhost:5000                                      
Hello World!
% curl http://localhost:5000/ja
こんにちは 世界!
  • 動きました〜
58
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
qoAop
こんにちは。 PerlとJavaScriptが好きだったんですが、最近はFirebase,Vue.jsです。 マネージドサービスってすごいですね。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
58
Help us understand the problem. What is going on with this article?