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

Py2exe Python Discussion :

py2exe mechanize egg


Sujet :

Py2exe Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut py2exe mechanize egg
    Bonjour,

    Je tente de créer un exe avec py2exe. Mon code utilise Mechanize.
    La création de l'exe s'effectue correctement. Néanmoins lors de son exécution, j'ai le message d'erreur suivant:

    File "test.pyw", line 5, in <module>
    ImportError: No module named mechanize

    Après recherche, j'ai trouvé ca: http://www.py2exe.org/index.cgi/ExeWithEggs

    # unpack zipped eggs, because I believe py2exe chokes on them when resolving dependencies
    # keep track of the top level packages in the eggs
    # add all of the files in the eggs to the data_files, so that the eggs are installed along side the main exe
    # build the exe
    # generate a new library.zip that does not include anything in the top level packages found in step 2

    Mais je ne vois pas vraiment ce qu'il faut faire. A quoi correspon le "data_files"
    Merci de votre aide.

    EDIT:
    python 2.5

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Le "data_files" dans le setup déclenche la copie de fichiers supplémentaires dans le répertoire "dist" (ou ses sous-répertoires).

    Je l'utilise, par exemple, pour copier l'icône de la fenêtre ou le manuel car ni l'un ni l'autre ne sont copiés automatiquement pendant la création de l'exe.

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci.

    Donc étape 1 et 2 avec ce script:
    import os
    import pkg_resources
    eggs = pkg_resources.require("mechanize")
    from setuptools.archive_util import unpack_archive
    for egg in eggs:
    if os.path.isdir(egg.location):
    sys.path.insert(0, egg.location)
    continue
    unpack_archive(egg.location, "eggdir")
    eggpacks = set()
    eggspth = open("build/eggs.pth", "w")
    for egg in eggs:
    print egg
    eggspth.write(os.path.basename(egg.location))
    eggspth.write("\n")
    eggpacks.update(egg.get_metadata_lines("top_level.txt"))
    eggspth.close()


    Dans le répertoire (eggdir), je trouve:
    ClientForm.py
    ClientForm.pyc
    Un dossier Mechanize.

    Etape3
    Donc je dois ajouter à mon setup.py ClientForm.py et ClientForm.pyc.
    setup(windows=["test.pyw"], data_files=[("eggdir",
    ["ClientForm.pyc"])])


    Mais avec les deux j'ai le message erreur suivant:

    error: can't copy 'ClientForm.pyc': doesn't exist or not a regular file.

    Merci de votre aide.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bon. A y 'est!!!!!!!

    Par contre j'ai abandonné le lien indiqué ci-avant.
    Méthode, sans doute loin d'être la meilleur, mais en tant que débutant...

    J'ai ajouté les fichiers de mechanize au zip des library.
    En exécutant mon exe, il ne trouvait pas urllib2
    J'ai ajouté a mon script import urllib2 et relancer py2exe.
    Après plusieurs compilation et plusieurs import ca fonctionne:
    Pour info, j'ai du ajouter, pour que mechanize fonctionne:
    import urllib2
    import htmlentitydefs
    import sgmllib
    import HTMLParser
    import md5
    import sha
    import RobotExclusionError
    import robotparser


  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Salut, j'ai exactement le même problème.
    Peux-tu détailler comment tu as fait ?
    J'ai pris les fichiers .py qu'il y a dans mechanize.egg et je les ai rajouté à mon archive "library.zip"
    Dans mon script j'ai importé tous les modules que tu cites, mais rien ne change

Discussions similaires

  1. [py2exe] wxPython et py2exe -> pb de rendu
    Par bibile dans le forum Py2exe
    Réponses: 7
    Dernier message: 14/06/2008, 19h02
  2. [PyQt] [py2exe]
    Par Zorro dans le forum Py2exe
    Réponses: 2
    Dernier message: 05/05/2006, 13h36
  3. [py2exe] Impossible de charger un module...
    Par Mr Hyde dans le forum Py2exe
    Réponses: 3
    Dernier message: 28/09/2005, 17h17
  4. [py2exe] Creation Py2Exe
    Par kedare dans le forum Py2exe
    Réponses: 8
    Dernier message: 15/09/2005, 12h50
  5. wxPython + MatPlotLib + py2exe
    Par bibile dans le forum Py2exe
    Réponses: 1
    Dernier message: 05/08/2005, 22h49

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