CLOVER🍀

That was when it all began.

Python実行時のバイトコードコンパイル(.pycファイル)の生成を抑止する

例えば、以下のようなモジュールをimportするPythonスクリプトがあったとして…

#!/usr/bin/python
# -*- coding: utf-8 -*-

import hoge

print 'Hello World!'

インポートされる側。

#!/usr/bin/python
# -*- coding: utf-8 -*-

print 'hoge'

これを実行すると、モジュール(インポートされる側)のバイトコードファイル(.pycファイル)が生成されます。

$ python hello.py 
hoge
Hello World!
$ ll
〜省略〜
-rw-rw-r-- 1 xxxxx xxxxx   77 2012-04-01 23:28 hello.py
-rw-rw-r-- 1 xxxxx xxxxx   56 2012-04-01 23:28 hoge.py
-rw-rw-r-- 1 xxxxx xxxxx  143 2012-04-01 23:35 hoge.pyc

これですね。

-rw-rw-r-- 1 xxxxx xxxxx  143 2012-04-01 23:35 hoge.pyc

Pythonを日常的に使うプログラマからすれば、このファイルが生成されるのはきっと当たり前なのでしょうが、個人的にはこれが抑止できたらいいなーと思っていました。

どうやら、pythonコマンドのオプションで制御できるようです。

python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-B     : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x
〜省略〜

というわけで、「-B」オプションです。

早速、pycファイルを削除して再度実行!

$ rm hoge.pyc
$ python -B hello.py 
hoge
Hello World!

今度は、pycファイルが生成されていません。

$ ll
〜省略〜
-rw-rw-r-- 1 xxxxx xxxxx   77 2012-04-01 23:28 hello.py
-rw-rw-r-- 1 xxxxx xxxxx   56 2012-04-01 23:28 hoge.py

今度から活用しましょ〜っと。