Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
35
Help us understand the problem. What is going on with this article?
@Kobayashi2019

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

More than 1 year has passed since last update.

__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

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

35
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Kobayashi2019
大阪工業大学学部4年、専門はロボットなのにプログラミングしかしない男。
techtrain
プロのエンジニアを目指すU30(30歳以下)の方に現役エンジニアにメンタリングもらえるコミュニティです。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
35
Help us understand the problem. What is going on with this article?