bevor ich mich hier mit einem py2exe-Problem gemeldet habe, habe ich in den alten Beiträgen gelesen, dass es bei vielen Fragen um ganz grundlegende Dinge geht. Zum Beispiel, dass mancher nicht weiß, wie man mit der Kommandozeile umgeht. Das ist unter Windows-Nutzern weit verbreitet. Statt auf die armen Fragenden einzuprügeln, wäre es doch viel einfacher, ihnen ein simples grafisches Frontend anzubieten.
Ich bin, wie andernorts erwähnt, selbst blutiger Anfänger. Daher poste ich hier einen simplen aber funktionierenden Entwurf. Verbesserungen und Erweiterungen kann jeder in diesem Thread posten.
Gruß,
Bernhard
Code: Alles auswählen
# -*- coding: cp1252 -*-
import sys
import os.path
import tkMessageBox
import tkFileDialog #Z. 5
from Tkinter import *
Begruessung="""Hallo !
Dieses Programm hilft Dir, py2exe auf Deine Python-
Programme anzuwenden:
1. Wähle im Dialog das Programm aus, das Du kompilieren möchtest.\n""" #Z.10
fenster=Tk()
anzeige=Text(fenster, width=60, height=30)
anzeige.insert(END, Begruessung)
anzeige.pack()
programm=tkFileDialog.askopenfile() #Z.15
if programm==None: sys.exit(1)
userprog=programm.name
userdir=os.path.dirname(userprog)
os.chdir(userdir)
programm.close() #Z.20
# erstelle setup.py
anzeige.insert(END, '2. Ich erstelle eine Setup-Datei in Deinem Ordner.\n')
anzeige.pack()
setupfile=file(userdir+'/setup.py','w') #Z.24
setupfile.write("""#Setup automatisch erstellt von WinPy2Exe
from distutils.core import setup
import py2exe
setup(options = {"py2exe": {"compressed": 1,
"optimize": 2,
"ascii": 1,
"bundle_files": 3}},\n
""")
console=tkMessageBox.askyesno("Mit Konsole?","""Soll Dein Programm ein \
Konsole-Fenster öffnen?
(z.B. für 'print' und 'input'. Im Zweifel immer 'Ja'""") #Z.35
rest=userprog+'"])'
if console==1:
setupfile.write('console=["'+rest)
anzeige.insert(END, ' Du willst ein Programm mit Konsole-Fenster\n')
anzeige.pack() #Z.40
else:
setupfile.write('windows=["'+rest)
anzeige.insert(END, ' Du willst ein Programm ohne Konsole-Fenster\n')
anzeige.pack()
setupfile.close() #Z.45
# erstelle Make.bat
anzeige.insert(END, '3. Erstelle make-Datei in Deinem Ordner\n')
anzeige.pack()
makefile=file(userdir+'/make.bat','w')
makefile.write(sys.exec_prefix+'\python -OO "'+userdir+'/setup.py" py2exe') #Z.50
makefile.close()
# starte Make.bat
anzeige.insert(END, "4. Ich rufe make auf\n")
anzeige.pack()
fehler=os.spawnl(os.P_WAIT,userdir+'/make.bat') #Z.55
if fehler!=0:
print "Es hat mindestens einen Fehler gegeben. Schade!\n"+str(fehler)
else:
print "Es müsste jetzt einen Ordner Dist geben, in dem eine selbständig lauffähige Version vorliegt"