-
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
-
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
-
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.
-
Bon. A y 'est!!!!!!! :yaisse2:
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
:yaisse2:
-
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 :(