IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Error éxécution script Python decompiler pour *.pyc


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 34
    Par défaut Error éxécution script Python decompiler pour *.pyc
    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:

    Traceback (most recent call last):
    File "uncompyle2", line 48, in <module>
    from uncompyle2 import main, verify
    ImportError: No module named uncompyle2
    Voici pour info le début du script Python:

    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)
     
    ...
    Bref on voit dans le fichier README.TXT du site précité que le script en fait s'appelle uncompyler puisque:

    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:

    Usage: uncompyle [OPTIONS]... [ FILE | DIR]...
    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 !

    Merci pour des éclaircissement et bonne continuation.

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 060
    Par défaut
    Il faut installer le package

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    python setup.py build
    sudo python setup.py install

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Par défaut Installer python sous windows n'est pas indispensable
    Bonjour,

    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...).
    C'est vrai que windows ne vient pas par défaut avec une version de python

    Cependant, si c'est pour éviter de le faire systématiquement pour une ou des
    applications occasionnelle, pourquoi ne pas les figer avec cx_Freeze ou py2exe ?
    Cela va générer un exécutable windows autonome + quelques fichiers de dépendance. Avec ça, il n'y plus besoin d'installer python ni les packages dont dépend l'appli
    Cela étant, que ce soit pour figer l'application python ou l'écrire dans un autre langage, le mieux est de partir des souces. C'est fort bien de décompiler, mais si votre script fait appel a des packages (dont certains en c++) que vous ne connaissez, que ferez-vous ?
    Les scripts python sont en général sous une licence libre. Donc, les sources doivent exister quelque part. Si ce n'est pas le cas, bonjour la galère.

    En espérant vous avoir été utile, à plus tard

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 34
    Par défaut
    Re

    Et merci pour vos réponses...

    fred1599:

    Tu n'as pas fait attention que je n'étais pas actuellement sous Linux. Mais je t'accorde que la chose est bien plus facile sous cet OS.

    chticricri:

    ...pourquoi ne pas les figer avec cx_Freeze ou py2exe ?
    Encore merci, je ne connais pas ces utilitaires, mais crois moi, le temps de finir de rédiger ce post et ils seront déjà chez moi histoire de voir ce que ça vaut.

    Cela étant, que ce soit pour figer l'application python ou l'écrire dans un autre langage, le mieux est de partir des souces
    ... ben justement, si l'auteur de ce programme libre (sic!) a fourni un *.pyc c'est soit qu'il ne connait pas les règles régissant les tools sous licence GNU/GPL, soit il l'a fait exprès...

    C'est fort bien de décompiler, mais si votre script fait appel a des packages (dont certains en c++) que vous ne connaissez, que ferez-vous ?
    Je ne crois pas que ce soit la mer à boire, si on sait ce que doit fait le tool ça m'est complètement égal de savoir quels packages de quels languages ont été utilisé puisque de toutes les façons il va être réécrit dans un autre language connu et pour lequel j'ai forcément tous tous les outils, librairies dont j'ai besoin. Ce n'est pas un simple clone que je veux faire, mais savoir à quoi il faut faire appel pour parvenir au but... Il n'y a pas qu'un seul chemin qui mène à Rome !

    Les scripts python sont en général sous une licence libre. Donc, les sources doivent exister quelque part
    ... Comme je le disais plus haut... L'auteur ne doit pas être au courant

    OK, voilà donc un bon début de piste, je vais donc faire ce qui m'a été indiqué puis ferais un feedback un peu plus tard.

    Merci et A+++

  5. #5
    Invité de passage
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 1
    Par défaut
    Citation Envoyé par zano972 Voir le message
    Re

    ... Comme je le disais plus haut... L'auteur ne doit pas être au courant

    OK, voilà donc un bon début de piste, je vais donc faire ce qui m'a été indiqué puis ferais un feedback un peu plus tard.

    Merci et A+++
    Et donc, des nouvelles? As-tu réussi?

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Ce fil est beaucoup trop ancien. Ses participants, ayant habilement surfé sur la vague des nouvelles technologies, sont devenus, depuis lors millionnaires de l'IT.

    Tu comprendras qu'il n'ont plus le temps de répondre sur des forums.

    Bref, je te recommande d'ouvrir un nouveau fil de discussion.

Discussions similaires

  1. script python bibtexall pour biblio multiple
    Par _Chronos_ dans le forum Bibliographies - Index - Glossaires
    Réponses: 0
    Dernier message: 29/06/2012, 22h10
  2. aide pour script python
    Par bansan dans le forum Général Python
    Réponses: 1
    Dernier message: 28/11/2008, 23h51
  3. Réaliser un install pour un script python
    Par mcarluec dans le forum Déploiement/Installation
    Réponses: 13
    Dernier message: 15/04/2008, 08h14
  4. [Cherche tuto/cours]Script Python pour Unix
    Par elflamby dans le forum Général Python
    Réponses: 2
    Dernier message: 05/09/2007, 14h38
  5. Réponses: 5
    Dernier message: 20/07/2006, 01h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo