pipenv + Flask 簡単なwebアプリケーション作成

f:id:wood__stock:20210629220219p:plain
最近初めてpipenvを使い仮想環境とパッケージ管理を行えることを知ったので、メモ。

pipenvとは

仮想環境作成(venv)とパッケージ管理(pip)が合わさったもの

実行環境

準備

pipenvインストール

pipコマンドでインストール

pip install --upgrade pip # pipアップグレード(必要に応じて)
pip install pipenv

プロジェクトファイル作成

mkdir project
cd project

仮想環境作成

使用するpythonバージョンに応じて選択(選択したバージョンのpythonがインストールされていること)
実行すると、~/.virtualenvs/project-XXXXXXに仮想環境が作成され、プロジェクト内にPipfileが作成される

# 仮想環境作成
pipenv --three # python3で作成
pipenv --two # python2で作成
pipenv --python 3.8 # バージョンを指定して作成
# project\Pipfile
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]

[dev-packages]

[requires]
python_version = "3.9"

作成する場所を変更する場合

たとえば以下のように変更したい場合、それぞれ環境変数を設定

仮想環境を作成するディレクトリを変えたい

# .\venv\project-XXXXXX に作成
# WORKON_HOME
set WORKON_HOME=%USERPROFILE%\venv 

プロジェクト内に作成したい

# project\.venv\project-XXXXXX に作成
# PIPENV_VENV_IN_PROJECT
set PIPENV_VENV_IN_PROJECT=true

Flaskプロジェクト作成

インストール

仮想環境にFlaskをインストールすると、Pipfile.lockが作成されインストールしたときのバージョンや依存関係のパッケージが記載される。Pipfile.lockは他のPCで同じ環境を再現する時などに使用。

# Flaskインストール
pipenv install flask
# Pipfile
[packages]
flask = "*"

アプリ作成

簡単に"HelloWorld"を返すアプリを作成

# project\app.py
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "HelloWorld!"

仮想環境で実行

仮想環境に入り、アプリを実行

# 仮想環境へ入る
pipenv shell

# Flask起動
(.venv)flask run
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

# ブラウザで'http://localhost:5000'にアクセス
# 'HelloWorld'

# 仮想環境を抜ける
(.venv)exit