файлы cx_Freeze и PYC / PYD - PullRequest
3 голосов
/ 20 мая 2010

Я использую cx_Freeze, чтобы заморозить мою программу на Python. При запуске cx_Freeze создается куча файлов PYD, целая куча файлов PYC помещается в архив с именем library.zip, и там также есть несколько DLL-файлов.

Может кто-нибудь сказать мне разницу между файлами PYC и PYD? В чем причина того, что файлы PYD отсутствуют в файле library.zip? Можно ли также поместить файлы PYD в архив?

Спасибо.

1 Ответ

6 голосов
/ 20 мая 2010

Отказ от ответственности: я не использовал cx_Freeze некоторое время ......

.PYD файлы - это файлы машинного кода DLL, которые содержат определенные функции, необходимые для python.

.PYC-файлы - это файлы .py, которые были скомпилированы в байт-код.

, поэтому PYD - это машинный код, а PYC - это байт-код

Теперь, что касается того, почему PYD-файлы отсутствуют в .zip .... Я думаю, это потому, что эти .PYD необходимы интерпретатору python для запуска программы. Что делает cx_Freeze, так это:

  1. скомпилируйте все файлы .py и выбросьте файлы .pyc в zip
  2. поместите все необходимые файлы .pyd в zip
  3. создайте заглушку .py файл и поместите его в выходной каталог
  4. скопируйте python.exe и переименуйте в myprogram.exe
  5. Скопируйте все файлы .pyd, необходимые для открытия .zip и запуска содержимого

Таким образом, вы фактически не компилируете свой файл Python, вместо этого вы переименовываете интерпретатор и замораживаете все исходные файлы.

Надеюсь, это поможет.

...