python3+Flaskのプロジェクト作成手順(WSL+VScode)
Web系は門外漢なので少し勉強しようかなとこちらを読んで手を動かしてみている。
(その1~3まである)
PythonでWebサービスを作る - Python3 + Flaskで作るWebアプリケーション開発入門
Pythonチョットできる&軽量フレームワークということでFlaskにした。
上記の本は流れで説明されているので、もろもろ開発に必要そうな環境構築手順のみをまとめる。
開発の中身は本を参照するとして触れない。
- Windows10 1903
- WSL ubuntu 18.04
- 言語: Python3
- フレームワーク: Flask
- SQL: PostgreSQL
- エディタ: Visual studio code
手順
0. Windows上の準備
1. WSL ubuntu18.04をインストール
2. パッケージインストール
3. DB作成
4. Python の仮想環境作成
5. 仮想環境内で必要なパッケージをpipでインストール
6. Gitの設定
手順詳細
windows上の準備
機能の有効化または無効化でWindows System for Linuxを有効化する。
- Japanese Language Pack for VS Code
- Remote - WSL
WSLのインストール
Winsows10のストアからUbuntu18.04をインストールして起動する。
ユーザ名とパスワードを設定する。
必要なパッケージをインストール。
user$sudo apt-get update user$sudo apt-get upgrade user$sudo apt install python3-pip user$sudo apt install python3-venv user$sudo apt install postgresql # pip3 install psycopg2を入れようとすると要求される。 user$sudo apt install postgresql-server-dev10 user$sudo service postgresql start user$wget -qO- https://cli-assets.heroku.com/install-ubuntu.sh | sh user$heroku login
postgresqlインストール後サービスのstartする。
HerokuのCLIツールも入れておく。(アカウントを作っておく)
テスト用のDBを作成
user$sudo -u postgres -i postgres$createuser -d -U postgres -P user_name #パスワードを入力 postgres$createdb db_name --encoding=UTF-8 --owner=user_name postgres$psql -U user_name -h localhost -d db_name db_name=> \l
postgresql関係の操作はpostgresに入って行う。
DBのテーブル作成等はさらにpsqlに入って行う。
\lでDBができているか確認する。
Ctrl+Dで抜けれる。
ここでパスワードを設定している場合、
app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://localhost/test_db"
を
app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://user_name:password@localhost/test_db"
とする。
Python venv作成
user$mkdir test_project user$python3 -m venv test_project user$cd test_project
環境in/out
# in user:~/test_project$ source bin/activate # out (test_project) user:~/test_project$ diactivate
pipパッケージのインストール
#環境に入って (test_project) user:~/test_project$ pip3 list pip (9.0.1) pkg-resources (0.0.0) setuptools (39.0.1) (test_project) user:~/test_project$ pip3 install flask # flaskを入れるとJinja2なども入る (test_project) user:~/test_project$ pip3 list Click (7.0) Flask (1.1.1) itsdangerous (1.1.0) Jinja2 (2.10.1) MarkupSafe (1.1.1) pip (9.0.1) pkg-resources (0.0.0) setuptools (39.0.1) Werkzeug (0.15.4) # 必要なものは入れる。 (test_project) user:~/test_project$ pip3 install psycopg2 psycopg2-binary (test_project) user:~/test_project$ pip3 install flask-sqlalchemy (test_project) user:~/test_project$ pip3 install flask-migrate (test_project) user:~/test_project$ pip3 install flask-login (test_project) user:~/test_project$ pip3 install flask_wtf (test_project) user:~/test_project$ pip3 install rauth (test_project) user:~/test_project$ pip3 install gunicorn # (test_project) user:~/test_project$ pip3 freeze > reqiorement.txt
reqiorement.txtを作ったあと、pkg-resources (0.0.0)の行を削除しないとエラーでる。
Gitの設定
user$ git config --global user.name your_name user$ git config --global user.email your_email # wslからVScodeを起動 user:~$ cd test_project user:~/test_project$ code
拡張機能を入れる。(インストール on WSLになっている。)
Gitの追加とコミット
user:~/test_project$ git init user:~/test_project$ git add . user:~/test_project$ git commit -m "first commit"
(.gitignoreの設定を考えなければならない)
flaskの起動
# app.py from flask import Flask app = Flask(__name__) @app.route('/') def test(): return 'Hello World!'
user:~/test_project$ export FLASK_APP = app.py user:~/test_project$ flask run
とするか
# app.py from flask import Flask app = Flask(__name__) @app.route('/') def test(): return 'Hello World!' if __name__=='__main__': app.run()
user:~/test_project$ python3 app.py
とする。
http://127.0.0.1:5000/にアクセスするとHello World が表示される。
手順としてのやり方はわかったけど、Herokuにデプロイ周りのお作法とかがよくわからないなぁ…
その辺も調べてまとめよう
参考
https://qiita.com/ryotaro76/items/6aa9d3187d742eed0325
https://flask-sqlalchemy.palletsprojects.com/en/2.x/config/
https://www.postgresql.jp/document/9.4/html/index.html
MySQLとPostgreSQLコマンド比較表 - Qiita
Ubuntu 18.04 に PostgreSQL をインストール : まととが書きます
https://qiita.com/y-tsutsu/items/2ba96b16b220fb5913be
https://qiita.com/Philosophistoria/items/48c4779739e6fafc63e0