Que signifient ces extensions de fichiers python?
- .pyc
- .pyd
- .pyo
Quelles sont les différences entre elles et comment sont-elles générées à partir d'un fichier * .py?
Que signifient ces extensions de fichiers python?
Quelles sont les différences entre elles et comment sont-elles générées à partir d'un fichier * .py?
Réponses:
.py: Il s'agit normalement du code source d'entrée que vous avez écrit..pyc: Ceci est le bytecode compilé. Si vous importez un module, python créera un *.pycfichier qui contient le bytecode pour faciliter sa réimportation plus tard (et plus rapidement)..pyo: Il s'agissait d'un format de fichier utilisé avant Python 3.5 pour les *.pycfichiers créés avec l' -Oindicateur d' optimisations ( ). (voir la note ci-dessous).pyd: Il s'agit essentiellement d'un fichier dll Windows. http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dllAussi pour plus de discussion sur .pycvs .pyo, jetez un œil à: http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html (j'ai copié la partie importante ci-dessous)
- Lorsque l'interpréteur Python est invoqué avec l'indicateur -O, du code optimisé est généré et stocké dans des fichiers '.pyo'. L'optimiseur n'aide pas beaucoup actuellement; il supprime uniquement les instructions assert. 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é.
- Passer deux drapeaux -O à l'interpréteur Python (-OO) entraînera le compilateur de bytecode à effectuer des optimisations qui pourraient dans de rares cas entraîner des programmes défectueux. Actuellement, seules les
__doc__chaînes sont supprimées du bytecode, ce qui donne des fichiers '.pyo' plus compacts. Étant donné que certains programmes peuvent dépendre de leur disponibilité, vous ne devez utiliser cette option que si vous savez ce que vous faites.- Un programme ne s'exécute pas plus rapidement lorsqu'il est lu à partir d'un fichier '.pyc' ou '.pyo' que lorsqu'il est lu à partir d'un fichier '.py'; la seule chose qui est plus rapide avec les fichiers «.pyc» ou «.pyo» est la vitesse à laquelle ils sont chargés.
- Lorsqu'un script est exécuté en donnant son nom sur la ligne de commande, le bytecode du script 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 plupart de son code vers un module et en ayant un petit script d'amorçage qui importe ce module. Il est également possible de nommer un fichier '.pyc' ou '.pyo' directement sur la ligne de commande.
Remarque:
Le 15/09/2015, la version Python 3.5 implémentait PEP-488 et supprimait les .pyofichiers. Cela signifie que les .pycfichiers représentent à la fois un bytecode non optimisé et optimisé.
def f(x): assert(x**5 == x*x*x*x*x); return x; import timeit; print(timeit.repeat("for x in range(100): f(x)", "from __main__ import f", number=10000));
.pyofichiers. Même le bytecode optimisé se termine par l' .pycextension Python 3.5.
sys.path. Voir sitemodule.Une liste plus longue d'extensions de fichiers Python supplémentaires (la plupart du temps rares et non officielles) peut être trouvée à http://dcjtech.info/topic/python-file-extensions/
.pthfichiers.