Pythonの__pycache__

ごく簡単なプログラムをPythonで書いたとして、テストを書くほどでもない…でもちょっと走らせたい部分があるのだが…そういう時はdoctestという仕組みが便利。

関数やクラスのところに文字列で、REPLのところをコピペした感じで書いておく。

"""
>>> 1+2
3
>>> foo("test")
"'test'"
"""
def foo(bar):
    return repr(bar)

↑こんな感じね。で、

  • python -m doctest your-file.py

みたいな感じで実行すると、テストしてくれる。-vとかをつけて実行するといちいち結果を表示してくれるという優れもの。

こういう美味しい話には穴があって、doctestを走らせると、doctestが該当ファイルをモジュールとして読み込むためか、__pycache__ディレクトリができてしまうのだ。

# ls
test.py
# python test.py
# ls
test.py
# python -m doctest test.py
# ls
__pycache__ test.py

これはダサい。

解決法は、.zshrcや.bashrcにこう書いておく。

  • export PYTHONDONTWRITEBYTECODE=1

すると、__pycache__の生成は抑制される。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です