はじめに
今回はPythonを実行した際に生成される「__pycache__」ファイルを作らない方法を紹介します。
Pythonの導入や基本操作が行えることを前提で進めます。
↓前提知識はこちらをご覧ください↓

__pycache__ファイルが作られる原因
「__pycache__」はPythonでモジュールを動かした際に生成されます。
モジュールとは「.pyファイル」で書い外付けのプログラムです。
下図の様な形で「import」を使って読み込む形になります。

下図のように2つ以上のプログラムを用意。
モジュールを読み込んで動かす設定をした方のプログラムを確認して実行。

すると… 「__pycache__」ファイルが作られます。
この__pycache__は、モジュール読み込みを高速するキャッシュファイルです。


高速化の効果は… 体感ではあまり無いようです。
ファイル内に余計なモノが生成されて、汚くなる方が問題になります。
なので “作らない設定” が必要になります。
(問題が起こったら、再度作るようにしてください)
そしたら、これが基本不要なモノと分かったので…
生成された「__pycache__」は右クリック。
→ 削除をShift+クリックして消してください。

以上が、__pycache__ファイルが作られる原因の解説です。
__pycache__を消す方法
__pycache__を消す方法は下記の3つ
・プログラム内に作らない処理を入れる
・コマンドプロンプトで作らない設定を入れて起動する
・コマンドプロンプトで2度と作らない処理を入れる(Windows OS)
こちらの3つについて解説していきます。
プログラム内に作らない処理を入れる
モジュールを読み込んで使うプログラムに下記の一文を追加。
import sys
sys.dont_write_bytecode = True
一番上の所に入れます。

この状態で「F5」キーで実行。

すると… 「__pycache__」が生成されません。

以上が、1つ目のプログラム内に作らない処理を入れる方法です。
コマンドプロンプトでプログラムを動かす(簡易)
そしたら動作確認のため、先ほど行ったプログラムの設定を解除します。
↓の一文を削除。
import sys
sys.dont_write_bytecode = True
下図のようなプログラムに戻して、まず “ターミナル” で実行する方法を紹介します。

そしたら、プログラムを保存した場所を開きます。
①ファイルのパスをコピー
②.pyファイル名を確認

そして、①と②の情報を下記のようにまとめます。
①と②の間に「\」を入れるようにしてください。
"プログラムの保存先" \ "プログラム名" .py
Windowsキー → Windows システム ツールのフォルダを開きます。
そして「コマンド プロンプト」を選択。

そしたら、先ほど「プログラムの保存先\プログラム名.py」を打ち込み。
Enterキーで実行。
すると、コマンドプロンプトで.pyファイルを動かせます。

そして… 「__pycache__」ファイルが作られます。

そしたら「__pycache__」を右クリック。
Shiftキーを押しながら「削除」を選択して消します。

以上が、コマンドプロンプトでプログラムを動かす方法です。
コマンドプロンプトで作らない設定を入れて起動する
コマンドプロンプトを使った際、特殊な文字を打ち込みます。
すると「__pycache__」無しで.pyファイルを実行できます。
python -B "プログラムの保存先" \ "プログラム名" .py
最初に「python -B 」と打ち込んでから、先ほどと同じ手順で実行。

すると「__pycache__」が生成されずに.pyファイルを実行できます。

もし、出力結果が「Python」の場合は…
「アプリ実行エイリアスを設定」か「環境変数」の問題が起こってます。

↓これに関しては、この記事の…
「「Python」しか出力されない時の対処法」を見て修正してください。

以上が、コマンドプロンプトで作らない設定を入れて起動する方法です。
コマンドプロンプトで2度と作らない処理を入れる
次の操作をターミナルで行うと、2度と「__pycache__」が作られなくなります。
set PYTHONDONTWRITEBYTECODE=1
このコードを動かしてから.pyプログラムを実行。

すると「__pycache__」が二度と作られなくなります。

.pyファイルを開いて、F5で実行しても同様の挙動です。
こちらでも「__pycache__」が作られなくなります。

また、この「__pycache__」を作る設定を戻したい場合は…
下記のコードをコマンドプロンプトで実行してください。
set PYTHONDONTWRITEBYTECODE=

これで「__pycache__」ファイルを作る設定に戻せます。

以上が、コマンドプロンプトで2度と作らない処理を入れる方法です。
まとめ
今回は、Pythonで「__pycache__」ファイルを作らない方法を紹介しました。
・__pycache__はモジュールを読み込んだ時に作られるファイル
・中に.pycファイルが入っている
・モジュールの読み込みを少し早くするキャッシュファイルが作られる
・ただ、無くてもあまり問題にならず、ファイルに余計なモノが増えるだけになりがち
・プログラム内に特殊な処理を入れたり、コマンドプロンプトでpython -Bを入れて実行すると作られない
・コマンドプロンプトで「set PYTHONDONTWRITEBYTECODE=1」を実行すると、継続して作られない
また、他にもプログラムについて解説してます。

ぜひ、こちらもご覧ください。
コメント