Wie funktioniert 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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich lege noch "Wie starte ich Skripte?" aus der FAQ drauf.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Hi,
Viel kann ich dir über Py2exe nicht sagen, habe es nur kurz mit folgendem Script ausprobiert (Datei_In_Listbox_Laden.py):

Code: Alles auswählen

import string
from Tkinter import *

root = Tk()

fo = open ('G:/Titelliste.txt')
allestrings = fo.readlines()
fo.close()

# Erzeugen der Scrollbar
scb = Scrollbar(root, orient="vertical")

# Erzeugen der Listbox, Verbindung mit der Scrollbar
li = Listbox(root, height=5, yscrollcommand=scb.set)
scb["command"] = li.yview

# Einlesen der Namen in die Listbox
for z in allestrings:
    li.insert(END,string.rstrip(z))

#Anzeigen von Listbox und Scrollbar
li.pack(side="left")
scb.pack(side="left",fill="y")

root.mainloop()
Um ein Script compilieren zu lassen, mußt du ein setup.py Script erstellen. Dort schreibst du dann alles rein, was der Compiler an Informationen benötigt. In meinem Fall:

Code: Alles auswählen

from distutils.core import setup
import py2exe

setup(windows=["C:/Ablage/Python/PythonScripte/Datei_In_Listbox_Laden.py"])
setup(name='Distutils',
      packages=['distutils', 'distutils.command'],)
Jetzt führst du (unter Windows zumindest) in Start -> Ausführen folgendes Kommando aus:

Code: Alles auswählen

C:/Ablage/Python/PythonScripte/setup.py py2exe
Das Kommando enthält den Pfad des setup.py Scriptes und den Aufruf von py2exe.

Wenn alles an seinem Platz ist, sollte das eigendlich funktionieren. Am Ende hast du im Verzeichniss des Quellscriptes zwei Ordner:
'build' und 'dist'. In 'dist' ist dann auch die .exe deines Scriptes drin.

Gruss, Seven
Zuletzt geändert von snakeseven am Sonntag 11. Dezember 2005, 11:18, insgesamt 1-mal geändert.
deShoe
User
Beiträge: 6
Registriert: Samstag 10. Dezember 2005, 18:35

also englisch kann ich schon ich arbeite mich auch meistens erfolgreich durch die tutorial durch nur bei py2exe hats halt net geklappt ;-)
Du bist nicht in der Kommandozeile!
-aber ueber dem schwarzen dos fenster steht doch python (command line)- hmm?

der vollständige fehler heißt:
>>> python D:\hm\python24\hm\setup.py py2exe
File "<stdin>", line 1
python D:\hm\python24\hm\setup.py py2exe
^
SyntaxError: invalid syntax
deShoe
User
Beiträge: 6
Registriert: Samstag 10. Dezember 2005, 18:35

vielen dank @ snakeseven -das hat geholfen jetzt funzts -THX

danke für eure hilfe
deShoe
User
Beiträge: 6
Registriert: Samstag 10. Dezember 2005, 18:35

ja compilieren geht jetzt..
nur das erste script das ich ausprobiert habe sagt mir:
Der Prozedureinsprungpunkt "" wurde in der DLL "KERNEL32.dll" nicht gefunden
was immer das heißen mag..
ich hab uebrigens tkinter benutzt in dem script..
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Hi deShoe,
TKinter compiliert er bei mir, aber Snack, was auf TKinter aufbaut, nicht.
Also, es gibt noch einige Geheimnisse mit py2exe, die es zu ergründen gilt.
Würde mich mal interessieren woran es gelegen hat, wenns dann doch (hoffentlich) mit dem Compilieren klappt.

Gruss, Seven
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Das hier hab ich im Netz gefunden. Macht Vieles einfacher. Einfach Pfade eingeben und abschicken. Für eine Windows-EXE muß man

Code: Alles auswählen

scripts = ["%s"]
in

Code: Alles auswählen

windows = ["%s"]
umändern.

Code: Alles auswählen

"""
makeExe.py
- Simple Python script to automate the creation
  of Python executables using py2exe.

(c) 2004 Premshree Pillai (24/01/04)
http://www.qiksearch.com/
"""

## Run this file from Python root dir

import sys
import re

def getFileName():
	global fileName
	fileName = raw_input("Enter file name (rel or abs path, eg., python/file.py): ")
	try:
		fp = open(fileName)
		fp.close()
	except IOError:
		print "File does not exist!"
		getFileName()

getFileName()

package = re.split(":",fileName)
package = re.split("/",package[len(package) - 1])
package = re.split(".py",package[len(package) - 1])
package = package[0]

def getSetupName():
	global setupName
	setupName = raw_input("Enter name of setup file (or <enter> for default): ")
	if(setupName == ''):
		setupName = "setup.py"
	try:
		fp = open(setupName)
		fp.close()
		flag = raw_input("Setup file exists! Rewrite (0=no; else <enter>)? ")
		if(flag == "1"):
			getSetupName()
	except IOError:
		setupName = setupName

getSetupName()

fp = open(setupName,"w")
temp = """from distutils.core import setup
import py2exe
setup(name = "%s",
     scripts = ["%s"],
)""" % (package,fileName)
fp.write(temp)
fp.close()

sys.argv.append("py2exe")
execfile(setupName)

fp = open(setupName,"w")
temp = ""
fp.write(temp)
fp.close()

print "\n", "Executable created!"
print "Press <enter> to exit..."
if(raw_input()):
	exit
Antworten