Pythonプロジェクト開発にあたりプロジェクトよく使いそうなコマンドやスクリプトに関する覚え書き
(なお、筆者は学習PCはWindows、エディターはVScodeを主に使用のためMacは調べ切れていませんm(_ _)m)~開発環境構築(venvの場合)
venvフォルダの作成
次のいずれかをディレクトリ直下で実行〇 cmd(コマンドプロンプト)の場合
wsl
python3 -m venv venv
〇 powershell の場合
#実行ポリシーを変更
PowerShell Set-ExecutionPolicy RemoteSigned CurrentUser
py -m venv venv
venv の有効化(activate)
次のいずれかをディレクトリ直下で実行〇 cmd(コマンドプロンプト)の場合
.\venv\Scripts\activate
〇 powershellの場合
venv\Scripts\Activate.ps1
#最後はps「イチ」
※本Qiita筆者は基本的にエディターは VScodeを使っていますが、(2024.7.11現在)特段何かvenvに関わる設定しておらず、PCシャットダウン時(または VScodeを閉じた時点??)には有効化が切れるようです。(※有効化時には、powershellの場合、以下の画像のように(venv)という表示が出ます)
開発環境をvenvで進めてGithubでコードを管理する場合の注意
venvフォルダ内には以下のようなファイル(ほとんどが各venvにインストールしたライブラリーに関する情報)が入っていますが、2枚目の画像にあるように venvそのものPC内でのパス?の情報を以下の pyvenv.cfg は含んでいるため少なくともこのファイルは.gitignoreに記述すべきではないかと感じました。
※パスの中に個人のユーザー名が入っている可能性がある。requirements.txtがあれば必要なライブラリーはすぐに復元可能なため、venvフォルダごと.gitignoreに書いておいてもよい??
ライブラリー(またはパッケージの)インストール関係
〇 pip 自体のアップグレード
python -m pip install --upgrade pip
〇 pip で各開発環境にインストールしたライブラリーなどの現在のバージョン及び更新することで得られる最新バージョンの確認
py -m pip list --outdated
〇 上のコマンドで表示されたインストールされているライブラリー(・パッケージ)のうち、指定したものを最新のバージョンに更新する
py -m pip install --upgrade 更新したいライブラリー(・パッケージ)名
〇 ライブラリーのアンインストール
pip uninstall アンインストールしたいライブラリー(・パッケージ)名
requirements.txt(ライブラリ名とバージョン番号を指定してインストールするためのテキストファイル)関係
〇requirements.txtの作成&更新(普通にメモ帳などでも作成可能)
※テキストファイルの名前は慣例として、requirements.txt とするので、違うファイル名で作成する場合、下記の「requirements」を適宜変える。
pip freeze > requirements.txt
※pipですでにインストールされているものについては、作成・更新時に自動的に記述される。
※venvを一旦削除した状態で新たにvenvを作り直し、pip installをしないまま、このコマンドを打つと、requirements.txtが真っ白にリセットされるので注意
==>さすがにPoetryの学習始めました
〇作成した requirements.txt のファイルの名前を表示
cat requirements.txt
〇 requirements.txt を参照して(書かれた)ライブラリー(・パッケージ)を一括インストール
pip install -r requirements.txt
開発~
環境変数関係
〇(pip等でライブラリーなど設定した状態での使える)環境変数一覧出力
import os
if __name__ == '__main__':
for x in os.environ:
print((x, os.getenv(x)))
※なお、デフォルトで使えるものもいくつかあるように思える
①「TESTING」:特定のテストモードを有効にするために使用されるカスタムの環境変数(Trueのとき、アプリケーションがテストモードで動作するようにする。このテストモードでは、実際のデータベースではなくテスト用のデータベースを使用したり、メール送信などの特定の機能を無効にしたりすることが一般的)
※実際に TESTING = False になっていると、例えば flask-mailを使用してフォームでポスト送信した内容がメール送信するようにしてある場合、「ポスト送信自体にエラーは起こっておらずスクリプトも走っているはずなのに、メールが来ない」という状態が発生しました。
TESTING = True (or False)
Poetry関係
たぶん一番使うのは、既存のプロジェクトにPoetryを導入
wsl
$ poetry init
Flaskを始めてみる場合
create_app()や.envを定義せずにとりあえず始めてみる場合
(1)最低限のフォルダ等の構成
最低限以下のようにフォルダやapp.pyを作成(拡張子が.pyであれば、名前はapp.pyでなくともよい。まだ、この段階ではapp.pyの中身は空でよい) appsフォルダ
|--app.py
venv
(2)flask をインストール
pipなら以下のコマンドでインストールpip install flask
※注:Python外部ライブラリーあるあるだと思うのですが、flaskとFlaskは別物で Flask $\subset$ flask で、flask内に他にも必要不可欠なライブラリーが以下のように入っているため、「flask」で一気にインストールする方が楽
Django関連
①プロジェクトの作成
django-admin startproject プロジェクト名
②開発用サーバーの起動
python manage.py runserver
#もしくは
py manage.py runserver
#もしくは
python3 manage.py runserver
※プロジェクト作成したときにデフォルトで作成されるmanage.pyの名前をいじっていない場合
③Djangoの各プロジェクト内にアプリケーション(各機能、flaskでいうBlueprintに近い)のデフォルトを作成
python manage.py startapp 各アプリ(=機能)名
#もしくは
py manage.py startapp 各アプリ(=機能)名
#もしくは
python3 manage.py startapp 各アプリ(=機能)名
Github関連
主な参考資料
① Pythonエンジニア育成推進協会 Python実践レシピ 【技術評論社】
鈴木たかのり、筒井隆次、寺田 学、杉田雅子、門脇 諭 、福田 隼也(共著)
② Python Flask によるwebアプリ開発入門 物体検知アプリ&機械学習APIの作り方【翔泳社】
佐藤晶基、平田哲也(共著) 寺田 学(監修)
③ Flask公式ドキュメント:https://flask.palletsprojects.com/en/3.0.x/
なお、「Flask公式ドキュメント」等と検索すると邦訳版が出てきますが、そちらはバージョンが古いようで、つよつよの方によるとこちらを参照すべきとのことです。
④ Flask + SQLAlchemyプロジェクトを始める手順 @shirakiya(Yoshihiko Shiraki)さんQiita
https://qiita.com/shirakiya/items/0114d51e9c189658002e
⑤ Poetryをサクッと使い始めてみる @ksato9700 さんQiita
https://qiita.com/ksato9700/items/b893cf1db83605898d8a
⑥ [初心者向け] Poetry入門!インストール方法から使い方、コマンド、パッケージの管理方法まで徹底解説 @shun198 さんQiita
https://qiita.com/shun198/items/97483a227f288ad58112
⑦ 開発系エンジニアのためのDocker絵とき入門 【秀和システム】 鈴木 亮(著)
※Linuxコマンドの学習の必要性を感じるキッカケとなった本。手を動かしてコンテナを作っては壊して学ぶ