3

cx_Freeze を使用して Python プログラムをフリーズしています。cx_Freeze を実行すると、多数の PYD ファイルが作成され、多数の PYC ファイルが library.zip という名前のアーカイブに入れられ、いくつかの DLL ファイルもそこに含まれます。

PYC ファイルと PYD ファイルの違いを誰か教えてもらえますか? PYD ファイルが library.zip にない理由は何ですか? PYD ファイルもアーカイブに入れることは可能ですか?

ありがとう。

4

1 に答える 1

6

免責事項: しばらく cx_Freeze を使用していません......

.PYD ファイルは、Python に必要な特定の関数を含む DLL マシン コード ファイルです。

.PYC ファイルは、バイトコードにコンパイルされた .py ファイルです。

したがって、PYD はマシン コードであり、PYC はバイトコードです。

PYD が .zip に含まれていない理由については、Python インタープリターがプログラムを実行するためにこれらの .PYD が必要であるためだと思います。cx_Freeze が行うことは、基本的に次のとおりです。

  1. すべての .py ファイルをコンパイルし、.pyc ファイルを zip に入れる
  2. 必要なすべての .pyd ファイルを zip に入れます
  3. スタブ .py ファイルを作成し、出力ディレクトリに配置します
  4. python.exe をコピーし、名前を myprogram.exe に変更します。
  5. .zip を開いて内容を実行するために必要なすべての .pyd ファイルをコピーします。

したがって、実際には python ファイルをコンパイルしているのではなく、代わりにインターピーターの名前を変更し、すべてのソース ファイルをフリーズしています。

これが役立つことを願っています。

于 2010-05-20T16:45:46.673 に答える