LoginSignup
130
71

More than 3 years have passed since last update.

__pycache__とはいったいなんなのか?

Last updated at Posted at 2019-07-09

__pycache__とはいったいなんなのか?

開発中に幾度となく目にします。
知らぬ間に追加されていて、消してよいのか悪いのかわからず放って置くものの、目障りでしょうがない。

一体誰なんだお前は!

atom.PNG

そもそも読み方わからない問題

pycache?なんだそれ?
pyはわかるけどせめてぱっと見で意味が通る名前にしてくれよ~

しかし私はただの馬鹿だったようです。
cache.PNG

キャッシュ

よく使うデータへのアクセスを速くするために、より高速な記憶装置に一時的に保存する仕組み。

ASCII.jpデジタル用語辞典より

プログラマなら当然知っているべき単語でした。

今まで「パイケイク」と読んでいましたが「パイキャッシュ」が正解であるようですね…

__pycache__が何してるかわからない問題

もうgoogle翻訳にかけた時点でほとんどわかっているのですが、続けましょう。

pythonファイルを実行したとき、コンパイルされたモジュールが__pycache__の中pycファイルにキャッシュされます。

これを残しておけばコンパイルを経ずにプログラムを実行することができるので実行が速くなります。
プログラムを変更するたびに書き換えられます。
消しても問題ありませんが、実行が少し遅くなります。

__pycache__君、帰っていいよ

頑張ってくれてはいるんだけどね。
たまにおせっかいだなぁ…なんて。

どうしても邪魔だと思う方へ

__pycache__を消す方法1(コマンドで指定)

$ python -h

を実行すると方法を教えてくれます。

-B     : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x

例えば、hoge.pyを実行するときにキャッシュを作られたくなければ

$ python -B hoge.py

このように-Bを付けることで解決します。

__pycache__を消す方法2(環境変数)

環境変数の変数名をPYTHONDONTWRITEBYTECODEに、値を適当に設定することでキャッシュを作るのをやめるようです。
値は1が無難でしょう。

実際にやったことはない。

__pycache__を消す方法3(プログラムで指定する)

import sys
sys.dont_write_bytecode = True

このように書けばキャッシュを作らなくなります。

130
71
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
130
71