2010-05-20 16 views
3

J'utilise cx_Freeze pour geler mon programme python. Lors de l'exécution de cx_Freeze, un tas de fichiers PYD sont créés, tout un tas de fichiers PYC sont placés dans une archive appelée library.zip et quelques fichiers DLL sont également présents.Fichiers cx_Freeze et PYC/PYD

Quelqu'un pourrait me dire la différence entre les fichiers PYC et PYD? Quelle est la raison pour laquelle les fichiers PYD ne se trouvent pas dans library.zip? Est-il également possible de mettre les fichiers PYD dans l'archive?

Merci.

Répondre

6

Disclaimer: Je ne l'ai pas utilisé cx_Freeze en temps ......

fichiers .PYD sont des fichiers DLL code machine qui contiennent des fonctions de python-requis spécifiques.

Les fichiers .PYC sont des fichiers .py qui ont été compilés en bytecode.

si PYDs sont le code machine et PyCS sont bytecode

Maintenant que la raison pour laquelle l'PYDs ne sont pas dans le fichier .zip .... J'imagine que c'est parce que ces .PYDs sont nécessaires par l'interpréteur python exécuter le programme. Ce qui fait cx_Freeze est essentiellement ceci:

  1. compiler tous les fichiers .py et jeter les fichiers .pyc dans un zip
  2. mettre tous les fichiers nécessaires .pyd dans le zip
  3. créer un fichier .py de souche et mettre dans le répertoire de sortie
  4. copier le python.exe et renomme à myProgram.exe
  5. copie tous les fichiers .pyd nécessaires pour ouvrir le fichier .zip et exécuter le contenu

S o vous n'êtes pas en train de compiler votre fichier python, vous renommez l'interpètre et gèlerez tous les fichiers source.

J'espère que cela aide.

+0

Merci Tim. ..et tout cela pendant que je pensais que je l'ai "compilé" dans un exe. : p –

+0

Vous pourriez regarder dans pypy. Pypy peut en fait compiler votre code python en C, mais ce n'est pas vraiment facile à configurer/utiliser/comprendre. http://codespeak.net/pypy/dist/pypy/doc/ –