2011-03-01 5 views
14

Je suis un newb complet à python, d'où une question idiote. Si je comprends bien, lors de la première exécution d'un programme * .py, le code d'octet est créé en * .pyc et utilisé jusqu'à une modification du fichier * .py.où sont les fichiers .pyc?

Où peut-on trouver ce bytecode * .pyc dans un projet?

Je pense bin, mais rien est là

Répondre

20

Un fichier * .pyc est créé pour les modules importés et placé dans le même répertoire contenant le fichier .py. Cependant ... aucun fichier .pyc n'est créé pour le script principal de votre programme. En d'autres termes ... si vous appelez "python myscript.py" sur la ligne de commande, il n'y aura pas de fichier .pyc pour myscript.py.

Voici comment se comporte Python 2.x. Cependant, dans Python 3.x, les fichiers .pyc sont enregistrés dans un répertoire __pycache__. Voir la réponse de David Glick pour plus de détails.

[edit: Ajout d'une note à propos de Python 3.x.]

0

Les fichiers .pyc sont normalement créés dans le même répertoire que les fichiers qu'ils correspondent à. Par exemple, my_file.py et my_file.pyc doivent être au même emplacement.

+0

Je vois 2 fichiers à côté du dossier source: .pydevproject et .project. Source interne, je vois seulement le fichier .py – JAM

+0

Il n'y aura pas nécessairement de .pyc pour chaque fichier. Ils sont normalement créés lorsqu'un module est importé plutôt que directement. –

1

Ils sont créés dans always quel que soit le répertoire contenant vos fichiers .py. En outre, ils sont créés pour les modules importés, pas les fichiers que vous exécutez directement.

Si vous souhaitez créer des fichiers .pyc, démarrez un interpréteur Python et seulement import les modules de votre choix.

14

En Python < 3.2, les fichiers .pyc sont placés dans le même répertoire que le fichier .py.

Dans Python 3.2, les fichiers compilés sont placés dans un sous-répertoire __pycache__ et sont nommés différemment selon l'interpréteur Python qui les a créés. (Cela peut être utile aux personnes qui importent les mêmes modules Python à partir de plusieurs versions de Python.) Voir http://docs.python.org/dev/whatsnew/3.2.html#pep-3147-pyc-repository-directories pour plus d'informations.

+2

Pour les futurs lecteurs qui ont la confusion que je viens de résoudre: Cela ne s'applique qu'aux * modules *. Votre premier script "Hello, world" n'aura pas de fichier '.pyc' écrit * n'importe où *. Voir [cette réponse] (http://stackoverflow.com/a/27735336/5419599) pour des explications. – Wildcard

Questions connexes