概要
よく忘れるので、ちょこっと自分用のメモです。
Pythonでは、モジュールをimportするとデフォルトでインタープリターがソースコードをbytecodeに変換した結果をpycファイルとして書き出すようになっています。
このファイルは、__pycache__
という名前のディレクトリに出力されます。(これPython3からこうなったと記憶あり。たしか、Python2系ではpy
と同じ場所にpyc
出来てたはずです)
Python始めた頃に、「なんだこのディレクトリ?」ってなる人多いのではないでしょうか。
で、このpyc
ファイル、別に無くても構いません。存在する場合、Pythonが実行時にbytecodeへのコンパイルを省略してくれるだけです。
なければ、その都度bytecodeコンパイルが走ります。云わば、キャッシュみたいなものです。pyc
ファイルがあるからといって実行速度が上がるわけではありません。
今回このpyc
ファイルの生成をしないようにする設定についてです。
なんでpycファイル無い方がいいのか?
個人的に以下の理由からです。
__pycache__
ディレクトリとか勝手に出来上がるのが嫌。てか邪魔pyc
ファイルの中身は、バージョン毎に互換性がない。たまに、同じスクリプトをバージョン切り替えて実行したいときにpyc
ファイルが上書きされたりしたりする。基本ずっとOFFの状態で作業しているけど、困ったことが今のところ無い。
設定方法
pyc
ファイルを生成しないようにする設定は、以下のどれかで出来ます。
環境変数にPYTHONDONTWRITEBYTECODE
を設定する
私自身はこの方法でいつも設定しています。環境変数にPYTHONDONTWRITEBYTECODE
という名前で定義します。
値は、なんでもいいです。私はいつも「1」です。
sys.dont_write_bytecode
をTrueに設定する
これは実行時に設定するやり方。
import sys sys.dont_write_bytecode = True
で、生成されなくなります。
python
コマンドの-B
オプションをつける
以下のようにします。
$ python -B asyncio01.py
参考情報
1. コマンドラインと環境 — Python 3.6.4 ドキュメント
1. コマンドラインと環境 — Python 3.6.4 ドキュメント
Common Gotchas — The Hitchhiker's Guide to Python
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場