web-dev-qa-db-fra.com

À quoi correspondent les extensions de fichier python, .pyc .pyd .pyo?

Que signifient ces extensions de fichier python?

  • .pyc
  • .pyd
  • .pyo

Quelles sont les différences entre eux et comment sont-ils générés à partir d'un fichier * .py?

403
Yanki Twizzy
  1. .py: C'est normalement le code source d'entrée que vous avez écrit.
  2. .pyc: C'est le bytecode compilé. Si vous importez un module, python créera un fichier *.pyc contenant le code secondaire afin de le réimporter plus tard (et plus rapidement).
  3. .pyo: Il s'agit d'un fichier *.pyc créé lors de l'optimisation (-O).
  4. .pyd: Il s'agit essentiellement d'un fichier windows dll. http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dll

Également pour une discussion plus approfondie sur .pyc vs .pyo, consultez: http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html = (J'ai copié la partie importante ci-dessous)

  • Lorsque l’interprète Python est appelé avec l’indicateur -O, un code optimisé est généré et stocké dans des fichiers ".pyo". L’optimiseur n’aide pas beaucoup actuellement; il supprime uniquement les déclarations d'assertion. Lorsque -O est utilisé, tout le bytecode est optimisé. Les fichiers .pyc sont ignorés et les fichiers .py sont compilés en bytecode optimisé.
  • Si vous passez deux indicateurs -O à l'interpréteur Python (-OO), le compilateur de code intermédiaire effectuera des optimisations susceptibles, dans de rares cas, de provoquer le dysfonctionnement de programmes. Actuellement, seules les chaînes __doc__ sont supprimées du bytecode, ce qui donne des fichiers ‘.pyo’ plus compacts. Certains programmes pouvant dépendre de leur disponibilité, vous ne devriez utiliser cette option que si vous savez ce que vous faites.
  • Un programme ne s’exécute pas plus vite s’il est lu depuis un fichier ‘.pyc’ ​​ou ‘.pyo’ que s’il est lu depuis un fichier ‘.py’; La seule chose qui est plus rapide avec les fichiers .pyc ou .pyo est la rapidité avec laquelle ils sont chargés.
  • Lorsqu’un script est exécuté en indiquant son nom sur la ligne de commande, le pseudo-code correspondant n’est jamais écrit dans un fichier ‘.pyc’ ​​ou ‘.pyo’. Ainsi, le temps de démarrage d'un script peut être réduit en déplaçant la majeure partie de son code dans un module et en utilisant un petit script bootstrap qui importe ce module. Il est également possible de nommer un fichier ".pyc" ou ".pyo" directement sur la ligne de commande.

Remarque:

Le 2015-09-15, le version Python 3.5 a implémenté PEP-488 et éliminé les fichiers .pyo. Cela signifie que les fichiers .pyc représentent des codes octets non optimisés et optimisés.

450
Bill Lynch

Une liste plus longue de Python extensions de fichier (pour la plupart rares et non officielles) est disponible à l’adresse suivante: http://dcjtech.info/topic/python-file-extensions/

214