Bonjour à tous et toutes,
Peu habitué à manier des scripts python, mais dans la nécessité d'en utiliser un, je me trouve confronté à une erreur que je ne comprends absolument pas et pour laquelle je fais appel aux connaisseurs...
J'ai donc un script Python compilé, un *.pyc. Je voudrais donc le décompiler afin de retrouver un fichier source en *.py, ce qui me permettra par la suite de réécrire ce script dans un language un peu plus utilisé sous windows tels que le C++, C#, Delphi, etc. (car tout le monde n'est pas prêt à installer un pack Python pour Windows sur son PC juste pour une petite application...).
Après bien des recherches, je tombe sur le script suivant: uncompyle disponible sous le lien suivant:
https://github.com/gstarnberger/uncompyle
que je charge bien évidemment. Ayant Python 2.7.1 (et sur une autre machine une version 3.X.X - bref le pb n'est pas faute à une version de Python puisque de toutes les façons on peut encore télécharger et installer des archives du site Python la version dont on a besoin...), je tente de faire fonctionner ce script et j'ai cette erreur:
Voici pour info le début du script Python:Traceback (most recent call last):
File "uncompyle2", line 48, in <module>
from uncompyle2 import main, verify
ImportError: No module named uncompyle2
Bref on voit dans le fichier README.TXT du site précité que le script en fait s'appelle uncompyler puisque:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 """ Usage: uncompyle [OPTIONS]... [ FILE | DIR]... Examples: uncompyle foo.pyc bar.pyc # uncompyle foo.pyc, bar.pyc to stdout uncompyle -o . foo.pyc bar.pyc # uncompyle to ./foo.dis and ./bar.dis uncompyle -o /tmp /usr/lib/python1.5 # uncompyle whole library Options: -o <path> output decompiled files to this path: if multiple input files are decompiled, the common prefix is stripped from these names and the remainder appended to <path> uncompyle -o /tmp bla/fasel.pyc bla/foo.pyc -> /tmp/fasel.dis, /tmp/foo.dis uncompyle -o /tmp bla/fasel.pyc bar/foo.pyc -> /tmp/bla/fasel.dis, /tmp/bar/foo.dis uncompyle -o /tmp /usr/lib/python1.5 -> /tmp/smtplib.dis ... /tmp/lib-tk/FixTk.dis -c <file> attempts a disassembly after compiling <file> -d do not print timestamps -p <integer> use <integer> number of processes -r recurse directories looking for .pyc and .pyo files --verify compare generated source with input byte-code (requires -o) --help show this message Debugging Options: --showasm -a include byte-code (disables --verify) --showast -t include AST (abstract syntax tree) (disables --verify) Extensions of generated files: '.dis' successfully decompiled (and verified if --verify) '.dis_unverified' successfully decompile but --verify failed '.nodis' uncompyle failed (contact author for enhancement) """ Usage_short = \ "decomyple [--help] [--verify] [--showasm] [--showast] [-o <path>] FILE|DIR..." import sys, os, getopt import os.path from uncompyle2 import main, verify import time if sys.version[:3] != '2.7': print >>sys.stderr, 'Error: uncompyle2 requires Python 2.7.' sys.exit(-1) ...
Usage
-----
uncompyler -h prints short usage
uncompyler --help prints long usage
Dans la brève explication mise en commentaire dans le script téléchargé: uncompyle2 on peut lire:
Ma question est donc en fin de compte comment et avec quoi se lance ce script ? manque t'il quelque chose ? car le moins que l'on puisse dire c'est que c'est loin d'être très clair cette affaire en Python !Usage: uncompyle [OPTIONS]... [ FILE | DIR]...
Merci pour des éclaircissement et bonne continuation.
Partager