Aller au contenu

Convertir PYC en PY

Récupérer un code source Python lisible à partir du bytecode avec des décompilateurs correspondant à la version.

Créer des fichiers PY en ligne

Nous ne savons pas encore lire les fichiers PYC, cette conversion n’est donc pas proposée. Si vous pouvez exporter votre travail dans l’un de ces formats, nous en ferons un PY :

Vous voulez convertir PYC en PY ?

Dites-le-nous. Nous choisissons les prochaines conversions à ajouter selon l'intérêt.

Comment convertir pyc en fichier py

Un fichier PY est nécessaire lorsqu’un programme, un développeur ou une archive contient uniquement un module Python compilé, mais que son code source doit être inspecté ou modifié. Il s’agit d’une décompilation et non d’une conversion de format sans perte ; le code récupéré peut donc ne pas correspondre à l’original.

Qu’est-ce que le format PYC ?

Les fichiers PYC contiennent du bytecode Python et un objet de code sérialisé destiné à être exécuté par un interpréteur Python. Python les crée généralement lors de l’importation ou de la compilation d’un fichier PY, en les plaçant dans __pycache__ avec des noms tels que module.cpython-311.pyc. Les packages installés, les déploiements d’applications et les logiciels regroupés peuvent contenir des fichiers PYC sans le code source correspondant.

Un fichier PYC possède un en-tête contenant des métadonnées sur l’interpréteur et le cache, suivi de données de bytecode marshalées. Il ne conserve normalement pas les commentaires, les espaces d’origine, les guillemets, la mise en forme ni l’organisation exacte du code source. De nombreux identifiants restent présents dans l’objet de code, mais l’optimisation, l’obfuscation, le code généré et les détails de compilation peuvent supprimer ou modifier certaines informations.

Qu’est-ce que le format PY ?

PY est un fichier de code source Python en texte brut, destiné à être lu et modifié. Les interpréteurs Python, les IDE, les linters, les formateurs, les systèmes de contrôle de version et les outils de packaging fonctionnent directement avec les fichiers PY. Contrairement à une sortie reconstruite, un fichier PY original conserve les commentaires du développeur, la mise en forme, l’organisation du code source et, généralement, toute l’intention exprimée au niveau du code source.

Renommer un fichier PYC en .py ne le convertit pas : le résultat reste du bytecode binaire et ne constitue pas un code source Python valide.

Comment décompiler un fichier PYC

  1. Créez une copie du fichier PYC et travaillez sur cette copie. N’exécutez pas un fichier PYC ou un script reconstruit non fiable : les décompilateurs et les imports Python doivent être exécutés dans un environnement isolé lorsque le fichier n’est pas fiable.
  2. Identifiez la version de Python qui a créé le fichier. Un nom tel que module.cpython-311.pyc indique CPython 3.11, mais un nom de fichier autonome peut ne pas contenir cette information. Le package à l’origine du fichier, l’en-tête PYC ou le magic number du bytecode peuvent fournir des indices supplémentaires.
  3. Installez un décompilateur dont la documentation indique qu’il prend en charge cette version du bytecode. Par exemple :
python -m pip install decompyle3
decompyle3 -o recovered path/to/module.pyc

Le répertoire de sortie doit contenir les fichiers de code source reconstruits. Si la commande installée n’est pas disponible dans le PATH du système, exécutez le fichier exécutable depuis le répertoire des scripts de l’environnement.

Pour une autre version prise en charge, essayez uncompyle6 :

python -m pip install uncompyle6
uncompyle6 -o recovered path/to/module.pyc

decompyle3 et uncompyle6 prennent en charge des plages spécifiques de bytecode Python plutôt que toutes les versions actuelles. Consultez donc la documentation de compatibilité de chaque projet avant de choisir entre les deux. pycdc constitue une autre option locale lorsque sa version prend en charge la version de bytecode du fichier :

pycdc path/to/module.pyc > recovered.py

Les services en ligne tels que PyLingual peuvent être utiles pour les fichiers non confidentiels lorsque leur compatibilité publiée inclut la version de Python du fichier PYC. Le téléchargement d’un bytecode envoie potentiellement du code propriétaire à un tiers et peut le soumettre à des limites de taille, de conservation ou de traitement : utilisez un outil local pour les logiciels confidentiels et vérifiez la sortie téléchargée avant de l’ouvrir ou de l’exécuter.

Vérifier et réparer le code source récupéré

Ouvrez le fichier .py généré dans un éditeur et vérifiez la syntaxe, les imports, la gestion des exceptions, les générateurs, les compréhensions, les décorateurs, les fermetures et le code généré dynamiquement. Compilez-le avec l’interpréteur prévu :

python -m py_compile recovered.py

Une compilation réussie vérifie uniquement la syntaxe. Exécutez les tests pertinents et comparez le comportement avec celui de l’application d’origine avant d’utiliser le résultat comme code source de remplacement. Un décompilateur peut produire un code apparemment valide dont le flux de contrôle est incorrect ou qui présente des informations manquantes.

Compatibilité et limites de la récupération

Le bytecode est étroitement lié aux implémentations et aux versions de Python. Un fichier PYC créé par Python 3.11 ou 3.12 peut ne pas fonctionner avec un décompilateur qui ne prend en charge que des versions plus anciennes du bytecode ; les fichiers PYC de Python 2 nécessitent généralement des outils compatibles avec Python 2. Un fichier endommagé, tronqué, optimisé, obfusqué ou modifié peut produire une sortie incomplète ou échouer totalement.

La décompilation ne peut pas restaurer les commentaires, la mise en forme d’origine, les modules externes indisponibles, les données du package ni les fichiers source référencés par le code. Les modules d’extension natifs ne sont pas des fichiers Python PYC et nécessitent d’autres méthodes de récupération. Le fichier PY original, le dépôt de contrôle de version, l’archive de déploiement, la sauvegarde ou le code source du package constituent le seul moyen fiable d’obtenir le code source exact.

Comparaison du format PYC vs PY

Comparaison entre les formats PYC et PY sur les propriétés les plus importantes pour cette conversion.

Comparaison des formats de fichier PYC et PY
Propriété .PYC Python compiled bytecode .PY Python source file
Lisible en texte brut Non Oui
Mise en forme du texte Aucun Basique
Images Non Non
Modification ultérieure Non modifiable directement Facile
S’ouvre dans un navigateur web Non Non
Taille de fichier typique Très petit Petit
Norme ouverte Oui Oui
Idéal pour Intégration dans des applications Montage et post-production
Date d’introduction 1991 1991
Développeur Python Software Foundation Python Software Foundation
Type MIME — text/x-python

Les informations sur les extensions et les types de fichiers sont fournies par File-Extensions.org

Questions fréquentes

Peut-on convertir un fichier .pyc en fichier .py ?

Un fichier .pyc peut parfois être décompilé en code source .py approximatif, mais il est généralement impossible de le restaurer à l’identique. Les commentaires, la mise en forme et certains détails du code source sont normalement perdus lors de la compilation.

Le code .py récupéré sera-t-il identique à l’original ?

Non, le code .py récupéré est généralement une reconstruction du bytecode compilé plutôt que le code source original. Les noms et la structure du programme peuvent être partiellement conservés, mais les commentaires, les espaces, certaines expressions et d’autres détails du code source peuvent être différents ou manquants.

Pourquoi la conversion de .pyc en .py échoue-t-elle pour certains fichiers Python ?

Elle échoue souvent lorsque la version du bytecode ne correspond pas au décompilateur ou lorsque le fichier a été optimisé, obfusqué, endommagé ou produit par une autre implémentation de Python. Un fichier .pyc peut également ne contenir que le code compilé d’un module ; il ne peut donc pas restaurer des fichiers source ou une structure de projet qui n’y figuraient pas.

Puis-je exécuter le fichier .py obtenu exactement comme l’original ?

Souvent, mais pas toujours ; le code récupéré peut nécessiter des corrections manuelles avant de fonctionner. Un bytecode spécifique à une version de Python, des fichiers externes manquants et des détails du code source perdus peuvent provoquer des erreurs de syntaxe ou modifier le comportement.

Conversion inverse

Conversion vers .py
depuis d'autres formats

Partager sur les réseaux sociaux :

Déjà téléchargé

Ce fichier a déjà été téléchargé. Pour protéger votre vie privée, nous l’avons supprimé de notre serveur juste après le téléchargement, il ne peut donc pas être téléchargé à nouveau. Pour l’obtenir encore une fois, convertissez de nouveau le fichier.