そういうことになったのでやる。Python初心者です。
~/W/flask ❯❯❯ python3 --version Python 3.7.3
とりあえず手元のPythonは3.7.3だった。
~/W/flask ❯❯❯pip3 install flask
でインストール
~/W/flask ❯❯❯ pip3 list | grep Flask Flask 2.0.2
はいった。
とりあえず GETリクエストに返答するやつ。
#hello.py from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == "__main__": app.run(debug=True)
実行してみたらエラー。
~/W/flask ❯❯❯ python3 hello.py Traceback (most recent call last): File "hello.py", line 1, in <module> from flask import Flask ModuleNotFoundError: No module named 'flask'
Moduleのパスが通ってなかった。さっきいれたやつどこにあるんだっけ。
~/W/flask ❯❯❯ pip3 install Flask ✘ 1 Requirement already satisfied: Flask in /usr/local/lib/python3.9/site-packages (2.0.2) Requirement already satisfied: Werkzeug>=2.0 in /usr/local/lib/python3.9/site-packages (from Flask) (2.0.2) Requirement already satisfied: click>=7.1.2 in /usr/local/lib/python3.9/site-packages (from Flask) (8.0.3) Requirement already satisfied: Jinja2>=3.0 in /usr/local/lib/python3.9/site-packages (from Flask) (3.0.2) Requirement already satisfied: itsdangerous>=2.0 in /usr/local/lib/python3.9/site-packages (from Flask) (2.0.1) Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.9/site-packages (from Jinja2>=3.0->Flask) (2.0.1)
設定ファイルでパスを通すやりかたもあるらしいが、いったん手短にFlaskの挙動を確認したいだけだし、環境変数PYTHONPATHに上記の site-packages ディレクトリを設定することにする。
#boot.sh export PYTHONPATH="$PYTHONPATH:/usr/local/lib/python3.9/site-packages" python3 ./hello.py
~/W/flask ❯❯❯ chmod +x boot.sh ~/W/flask ❯❯❯ ./boot.sh * Serving Flask app 'hello' (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: on * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger PIN: 143-506-337
Webサーバー起動した。
はい。
host, port の変更は app.run の引数でやるらしい。
GET
GET リクエストに返答するやつを生やした。
from flask import Flask from flask import request app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' @app.route('/cat') def hello_cat(): searchword = request.args.get('key', '') return f'myow, {searchword}' if __name__ == "__main__": app.run(debug=True)
POST
POST リクエストに返答するやつ。 TBU