1. ホーム
  2. python

[解決済み] Pythonのファイル拡張子、.pyc .pyd .pyo は何の略ですか?

2022-03-21 09:12:28

質問

Pythonのこれらのファイル拡張子は何を意味するのですか?

  • .pyc
  • .pyd
  • .pyo

両者の違いや、*.pyファイルからの生成方法について教えてください。

どのように解決するのですか?

  1. .py : これは通常、あなたが書いた入力ソースコードです。
  2. .pyc : これはコンパイルされたバイトコードです。モジュールをインポートすると、pythonはコンパイル時に *.pyc ファイルにはバイトコードが含まれており、後で再びインポートするのが簡単に (そして速く) なるようになっています。
  3. .pyo : これは Python 3.5 より前に使われていたファイルフォーマットで *.pyc ファイルは、最適化されて作成された ( -O )フラグを使用します。(下記の注釈を参照)
  4. .pyd : これは基本的にWindowsのDLLファイルです。 http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dll

についても、もう少し考察してみましょう。 .pyc.pyo を、見てみてください。 http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html (以下、重要な部分をコピーしておきます。)

<ブロッククオート
  • Pythonインタプリタに-Oフラグを付けて起動すると、最適化されたコードが生成され、'.pyo'ファイルに格納されます。オプティマイザは今のところあまり役に立ちません; assert文を削除するだけです。.pyc ファイルは無視され、.py ファイルは最適化されたバイトコードにコンパイルされます。
  • Python インタープリタに 2 つの -O フラグを渡すと (-OO) 、バイトコードコンパイラが最適化を実行し、まれにプログラムが誤動作する可能性があります。現在では __doc__ 文字列がバイトコードから削除され、よりコンパクトな '.pyo' ファイルが生成されます。プログラムによっては、これらの文字列が利用可能であることに依存している場合があるので、 このオプションは自分が何をしているかを知っている場合のみ使用するようにしてください。
  • .pyc' や '.pyo' ファイルを読んでも、'.py' ファイルを読んでも、プログラムの実行速度が速くなることはありません。
  • コマンドラインでスクリプト名を指定して実行する場合、そのスクリプトのバイトコードが'.pyc' や '.pyo' ファイルに書き込まれることはありません。したがって、スクリプトのコードの大部分をモジュールに移動し、そのモジュールをインポートする小さなブートストラップスクリプトを持つことによって、スクリプトの起動時間を短縮することができる。また、コマンドラインから直接'.pyc' や '.pyo' ファイルに名前を付けることも可能である。

2015-09-15に Python 3.5リリース を実装し、PEP-488 を廃止しました。 .pyo ファイルです。 つまり .pyc ファイルは、最適化されていないバイトコードと最適化されたバイトコードの両方を表します。