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
- Programmation
- Aucune note pour l'instant.
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
- 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.
- Identifiez la version de Python qui a créé le fichier. Un nom tel que
module.cpython-311.pycindique 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. - 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.
| 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
Logiciel suggéré pour convertir pyc en py
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.