lxml und py2exe

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Janux
User
Beiträge: 78
Registriert: Donnerstag 12. Juni 2008, 21:11

Hallo!
Ich möchte mit py2exe eine .exe von meinem Programm erstellen.
Das comilieren funktioniert ohne Fehlermeldung, aber wenn ich das
Programm starten will kommt folgende Fehlermeldung (wegen lxml):

Code: Alles auswählen

Traceback (most recent call last):
  File "PyQuizzer.py", line 3, in <module>
  File "questions.pyc", line 4, in <module>
ImportError: No module named _elementpath
Traceback (most recent call last):
  File "PyQuizzer.py", line 3, in <module>
  File "questions.pyc", line 4, in <module>
ImportError: No module named _elementpath
Ich habe bei Google theoretisch schon eine Lösung gefunden,
nur versteh ich sie leider nicht.
http://codespeak.net/pipermail/lxml-dev ... 02909.html

Kann mir bitte jemand von euch erklären wie ich das Programm zum laufen kriege?
Zuletzt geändert von Janux am Donnerstag 8. Januar 2009, 15:34, insgesamt 2-mal geändert.
mfg ... Janux
Benutzeravatar
C4S3
User
Beiträge: 292
Registriert: Donnerstag 21. September 2006, 10:07
Wohnort: Oberösterreich

Schon mal auf der Py2Exe Website nachgeschaut, wie man module inkludiert?

http://www.py2exe.org
Gruß!
Janux
User
Beiträge: 78
Registriert: Donnerstag 12. Juni 2008, 21:11

C4S3 hat geschrieben:Schon mal auf der Py2Exe Website nachgeschaut, wie man module inkludiert?

http://www.py2exe.org
Ich finde auf der Seite nichts zu lxml oder etree.
mfg ... Janux
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Janux
User
Beiträge: 78
Registriert: Donnerstag 12. Juni 2008, 21:11

Hyperion hat geschrieben:http://www.py2exe.org/index.cgi/ShippingEmbedded

ISt es nicht das?

Code: Alles auswählen

setup.py py2exe --includes lxml
Das funktioniert auch nicht.
mfg ... Janux
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Janux hat geschrieben: Das funktioniert auch nicht.
lol ... super Fehlerbeschreibung ;-)
Janux
User
Beiträge: 78
Registriert: Donnerstag 12. Juni 2008, 21:11

Hyperion hat geschrieben:
Janux hat geschrieben: Das funktioniert auch nicht.
lol ... super Fehlerbeschreibung ;-)
Der Fehler ist der gleiche geblieben.

Edit: Ok, doch nicht :oops:

Jetzt steht

Code: Alles auswählen

Traceback (most recent call last):
  File "PyQuizzer.py", line 3, in <module>
  File "questions.pyc", line 2, in <module>
  File "lxml\etree.pyc", line 12, in <module>
  File "lxml\etree.pyc", line 10, in __load
  File "parsertarget.pxi", line 4, in lxml.etree (src/lxml/lxml.etree.c:125768)
ImportError: No module named inspect

im logfile.
mfg ... Janux
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Py2exe-wiki hat geschrieben: This will create a dist directory with all the files your embedded python needs. Rename library.zip to python23.zip and place all the files in the application directory.
Ich weiß jetzt nicht genau, was das bedeutet, aber anscheinend ist der obige "run" des Scriptes noch nicht dazu gedacht, eine .exe zu erstellen, sondern nur, die externen libs in einen Ordner zu pfrimeln. Hast Du das auch so befolgt?
Janux
User
Beiträge: 78
Registriert: Donnerstag 12. Juni 2008, 21:11

Hyperion hat geschrieben:
Py2exe-wiki hat geschrieben: This will create a dist directory with all the files your embedded python needs. Rename library.zip to python23.zip and place all the files in the application directory.
Ich weiß jetzt nicht genau, was das bedeutet, aber anscheinend ist der obige "run" des Scriptes noch nicht dazu gedacht, eine .exe zu erstellen, sondern nur, die externen libs in einen Ordner zu pfrimeln. Hast Du das auch so befolgt?
Normalerweise sind die fertigen Programme in dem Ordner `dist`.
... und eine Datei `library.zip` gibt es bei mir nicht ...
mfg ... Janux
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Janux hat geschrieben:die fertigen Programme in dem Ordner `dist`.
... und eine Datei `library.zip` gibt es bei mir nicht ...
Ok, dann wird da wohl schon was schief laufen fürchte ich.
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Nicht zwingend, die Zip kann auch an die fertige Exe angehängt sein. Ich hätte einfach gesagt, dass man py2exe noch sagen muss, dass man inspect braucht. lxml besteht eben teilweise aus C-Modulen, und da kann py2exe nicht feststellen, ob die von anderen Modulen abhängig sind.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Janux
User
Beiträge: 78
Registriert: Donnerstag 12. Juni 2008, 21:11

Trundle hat geschrieben:Nicht zwingend, die Zip kann auch an die fertige Exe angehängt sein. Ich hätte einfach gesagt, dass man py2exe noch sagen muss, dass man inspect braucht.
Wie meinst du das genau?
mfg ... Janux
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Dass du an das "--includes lxml" eben noch ein ",inspect" hängen musst (oder so in die Richtung). Und eleganter wäre wohl eh, das alles in die setup.py direkt zu schreiben und nicht händisch beim Erstellen als Argument zu übergeben.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Janux
User
Beiträge: 78
Registriert: Donnerstag 12. Juni 2008, 21:11

Ich habe die Lösung jetzt von jemandem auf der py2exe Mailing-Liste
bekommen. Der Vollständigkeit halber poste ich sie hier nochmal ...

Code: Alles auswählen

from distutils.core import setup

import py2exe

opts = {"py2exe": {"packages": ["lxml"]}}

setup(windows=["questions_clue_cards.py"],zipfile=None,name="test",
      version="1.0", options=opts
)

Danke für eure Bemühungen!
mfg ... Janux
Danielr
User
Beiträge: 1
Registriert: Mittwoch 23. Oktober 2013, 09:36

sorry das ich hier in dem alten thread poste :)

aber um lxml erfolgreich zu importieren musste ich noch

"includes": ["inspect"]

einfügen. vielleicht hilft es ja jemanden der auch Probleme hat

Code: Alles auswählen

from distutils.core import setup
import py2exe

opts = {"py2exe": {"packages": ["lxml"], "includes":["inspect"]}}
setup(windows=["euerprogramm.py"],zipfile=None, name="test",
      version="1.0", options=opts)
Antworten