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 *.pyc
fichier 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 *.pyc
fichiers créés avec l' -O
indicateur 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 .pyc
vs .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 .pyo
fichiers. Cela signifie que les .pyc
fichiers 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));
.pyo
fichiers. Même le bytecode optimisé se termine par l' .pyc
extension Python 3.5.
sys.path
. Voir site
module.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/
.pth
fichiers.