2-6 mypyの導入
同人誌について
この連載は、同人誌『PythonとPygameで作る レトロ風RPG 全コード』を一部抜粋して編集したものです。
同人誌本編には、ゲーム本体のソースコードや、各種のサンプルコード、Windowsで実行できるEXEファイルが付属しています。PDFで288ページの本になります。ぜひ、こちらもご購入ください(2024-03-10:ver1.0.3 に更新)。
mypyとは
『mypy』は、『Python』用のオプションの静的型チェッカーです。『mypy』を使えば、プログラムの実行前に型チェックをおこなえるようになります。その結果、バグに繋がる穴を事前に塞げます。
『Python』自体は、変数や関数に型の情報を書かなくてもよいです。しかし、型ヒントと呼ばれる型の情報を書くことで、想定外の値によるエラーを事前に防げます。
mypyの導入
『mypy』をグローバル環境に導入する際は`pip install mypy`コマンドを使います。今回は、仮想環境に導入して使いたいので、CLI環境でプロジェクトのディレクトリに移動して、次のコマンドを実行します。
.venv\Scripts\activate
pip install mypy
deactivate
インストールは3分程度かかります。「.venv」ディレクトリにファイルが導入されます。ディレクトリのサイズは、85.1MBになりました。前回の51.2MBから33.9MB増えました。
仮想環境内に正しくインストールできたか確認しましょう。次のコマンドを実行します。
.venv\Scripts\activate
pip list
deactivate
表示されるパッケージ一覧に「mypy」が含まれていれば正しくインストールできています。
mypyを使う
次のコマンドで、静的型チェックをおこないます。ディレクトリ内の全ファイルが対象になります。
.venv\Scripts\activate
mypy .
deactivate
ファイルを1つだけチェックするときはファイル名を指定します。
.venv\Scripts\activate
mypy main.py
deactivate
「mypy」を実行すると、「.mypy_cache」というディレクトリが作られて、その中にファイルが作られます。このファイルは、数行のプログラムでも数MBのサイズになります。その代わり、次回からの実行が早くなります。ただ、この「.mypy_cache」の恩恵は、よほど大きなプログラムを書かない限り受けられません。
「.mypy_cache」を作りたくないときは、次のように`--cache-dir=nul`を付けます(Unix系の場合は`--cache-dir=/dev/null`)。
.venv\Scripts\activate
mypy --cache-dir=nul .
deactivate
.venv\Scripts\activate
mypy --cache-dir=nul main.py
deactivate
コマンドラインのオプションは、次のページにまとまっています。
カレント ディレクトリ
「mypy」によるチェックは、カレント ディレクトリと、実行ファイルのルートが一致していないとエラーが出ることが多いです。
これは、モジュールの依存関係を、カレント ディレクトリをトップ ディレクトリと見なして判定していくためです。「mypy」でチェックするときは、カレント ディレクトリがどこにあるのかを確かめて実行する必要があります。
たとえば、先ほどのディレクトリ構成で「main.py」を確認するときは、「src/」をカレント ディレクトリにして実行するとよいです。
root/
dist/
main.exe
src/ …… ここをカレント ディレクトリにして実行する
audio/
font/
image/
.venv\Scripts\activate
cd src
mypy --cache-dir=nul .
deactivate
cd ..
同人誌について
この連載は、同人誌『PythonとPygameで作る レトロ風RPG 全コード』を一部抜粋して編集したものです。
同人誌本編には、ゲーム本体のソースコードや、各種のサンプルコード、Windowsで実行できるEXEファイルが付属しています。PDFで288ページの本になります。ぜひ、こちらもご購入ください(2024-03-10:ver1.0.3 に更新)。
このnoteの記事と、Webページに一部抜粋版を掲載しています。
技術系同人誌など まとめページ