これらの Python ファイル拡張子は何を意味するのでしょうか?
.pyc
.pyd
.pyo
それらの違いは何ですか? また、それらは *.py ファイルからどのように生成されるのですか?
ベストアンサー1
.py
: これは通常、記述した入力ソース コードです。.pyc
: これはコンパイルされたバイトコードです。モジュールをインポートすると、Python は*.pyc
バイトコードを含むファイルを構築し、後で再度インポートするときに簡単に (そして速く) できるようにします。.pyo
*.pyc
: これは、最適化 ( ) フラグを使用して作成されたファイルに Python 3.5 より前に使用されていたファイル形式です-O
。(下記の注記を参照).pyd
: これは基本的に Windows の dll ファイルです。http://docs.python.org/faq/windows.html#pyd ファイルは dll と同じか
.pyc
また、 vsに関するさらなる議論については.pyo
、以下をご覧ください。http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html(重要な部分を以下にコピーしました)
- Python インタープリタが -O フラグ付きで呼び出されると、最適化されたコードが生成され、「.pyo」ファイルに保存されます。現在のところ、オプティマイザはあまり役に立ちません。アサート ステートメントを削除するだけです。-O を使用すると、すべてのバイトコードが最適化されます。.pyc ファイルは無視され、.py ファイルは最適化されたバイトコードにコンパイルされます。
- Python インタープリタ (-OO) に 2 つの -O フラグを渡すと、バイトコード コンパイラが最適化を実行しますが、まれにプログラムが誤動作する可能性があります。現在、
__doc__
バイトコードから文字列のみが削除され、よりコンパクトな '.pyo' ファイルが生成されます。一部のプログラムはこれらのファイルの存在を前提としているため、何をしているのかわかっている場合にのみこのオプションを使用してください。- プログラムは、'.pyc' ファイルまたは '.pyo' ファイルから読み取られる場合と '.py' ファイルから読み取られる場合で実行速度が変わることはありません。'.pyc' ファイルまたは '.pyo' ファイルの方が速いのは、ロードされる速度だけです。
- スクリプトをコマンド ラインで名前を指定して実行する場合、スクリプトのバイトコードは '.pyc' または '.pyo' ファイルに書き込まれることはありません。したがって、スクリプトのコードのほとんどをモジュールに移動し、そのモジュールをインポートする小さなブートストラップ スクリプトを用意することで、スクリプトの起動時間を短縮できます。コマンド ラインで '.pyc' または '.pyo' ファイルを直接指定することもできます。
注記:
2015年9月15日、Python 3.5 リリースPEP-488 を実装し、.pyo
ファイルを削除しました。つまり、.pyc
ファイルは最適化されていないバイトコードと最適化されたバイトコードの両方を表します。