Comment exécuter un fichier .pyc (python compilé)?

18

Lorsque je compile un fichier python, j'obtiens un fichier * .pyc. Lorsque j'essaie d'exécuter cela, je reçois un message disant qu'il n'y a pas de programme pour les exécuter. Lorsque je recherche un programme en ligne via cette option, il indique qu'il n'y en a pas. Quelqu'un peut-il m'aider à y exécuter des fichiers?

Selby Rowley-Cannon
la source

Réponses:

24

Comme votre fichier python est compilé en octets, vous devez l'exécuter via l'interpréteur python

python yourfile.pyc

La raison pour laquelle vous pouvez exécuter vos fichiers .py directement est que vous avez la ligne

#!/usr/bin/python

ou

#!/usr/bin/env python

ou quelque chose de similaire sur la première ligne des fichiers .py. Cela indique à votre shell d'exécuter le reste du fichier avec l'interpréteur python.

tomodachi
la source
3
Pour compléter cette réponse: un fichier .pyc n'est pas compilé au sens strict du terme, car il ne s'agit pas d'un code machine natif. C'est, comme l'a écrit @tomdachi, un code d'octet spécifique à python (très similaire à un Java .class), c'est pourquoi il a toujours besoin de l'interpréteur python pour s'exécuter.
Pierre-Antoine
en fait, le pyc uniquement a été généré lorsque vous importez le fichier py. il est donc inutile d'exécuter le fichier pyc!
一个 患有 癌 并且 卓越 的 工程师 来 陆家嘴 搞 金融 显然 是 为了 理想 哈哈哈
2

Pour décompiler les fichiers python3 compilés .pyc, j'ai utilisé uncompyle6dans mon système d'exploitation Ubuntu actuel comme suit:

  1. Installation de uncompyle6:

    pip3 install uncompyle6
  2. Pour créer un fichier .py à partir d'un fichier .pyc Exécutez:

    uncompyle6 -o . your_filename.pyc
  3. Un nouveau fichier .py sera automatiquement créé avec le même nom de fichier .pyc existant.

Dhawaleswar
la source
-1

Python compile les fichiers .py et les enregistre en tant que fichiers .pyc afin de pouvoir les référencer dans les appels suivants. Le .pyc contient le bytecode compilé des fichiers source Python, ce à quoi l'interpréteur Python compile la source. Ce code est ensuite exécuté par la machine virtuelle de Python. Il n'y a aucun mal à les supprimer (.pyc), mais ils gagneront du temps de compilation si vous effectuez beaucoup de traitement.

Python est un langage interprété, par opposition à un langage compilé, bien que la distinction puisse être floue en raison de la présence du compilateur de bytecode. Compiler signifie généralement convertir en code machine qui est le plus rapide. Mais les interprètes prennent du texte lisible par l'homme et l'exécutent. Ils peuvent le faire avec une étape intermédiaire.

Par exemple, lorsque vous exécutez le fichier source myprog.py, l'interpréteur python cherche d'abord à voir s'il en myprog.pycexiste (qui est la version compilée du code octet de myprog.py) et s'il est aussi récent ou plus récent que myprog.py. Si c'est le cas, l'interprète l'exécute. S'il n'existe pas ou myprog.pyest plus récent qu'il (ce qui signifie que vous avez modifié le fichier source), l'interpréteur compile d'abord myprog.pyvers myprog.pyc.

Il existe une exception à l'exemple ci-dessus. Si vous mettez #! /usr/bin/env pythonla première ligne de myprog.py, rendez-la exécutable, puis exécutez-la myprog.pypar elle-même.

Shashank Sai Sangu
la source
1
Bienvenue sur Ask Ubuntu ! Ceci est une belle explication de la raison pour laquelle les pycfichiers existent mais vous n'avez pas répondu à la question de savoir comment les exécuter. Il peut être qualifié de commentaire très étendu, et non de réponse . Veuillez modifier votre message pour ajouter une réponse réelle.
Melebius