Hallo liebe Python-Gemeinschaft.
Ich hoffe dies ist das richtige Forum Forum für mein Anliegen, falls nicht möge man das mir bitte entschuldigen.
Die Forensuche hat auch meiner Meinung nach nichts dienliches hervor gebracht.
Seit nunmehr etwas mehr als einem Monat programmiere ich mit Python (v. 3.1) ein kleines Mathe-Programm. Alles läuft einwandfrei und ich würde es auch gerne meinen Freunden zur Verfügung stellen, was anfangs noch mit cxfreeze gut funktionierte, nachdem das Programm aber immer umfangreicher (für euch ist das Programm sicherlich überschaubar, für mich stellt es bereits eine große Errungenschaft dar) wurde, gibt mir cxfreeze immer Fehlermeldungen aus, mit denen ich nix anfangen kann. Auch die neueste Version von cxfreeze hat keine Besserung gebracht.
Ich wollte daher Fragen, ob ihr mir Alternativen oder Lösungswege aufzeigen könnt, die mir ermöglichen einfache .exe-Dateien zu erstellen, denn für manche meiner Freunde ist das installieren von Python selbst keine Alternative (Internet zu langsam, keine entsprechenden Rechte auf dem PC etc.).
Danke schonmal für alle Antworten!
Lg heiliga horsd
P.S.: Mein Programm ist nur Python 3.1-kompatibel, 2.xx macht Probleme.
Probleme mit cxfreeze und Python 3.1
Hi,
1.) Du könntest uns die cx_freeze Fehlermeldungen zeigen, vielleicht kann hier einer etwas mehr damit anfangen und Lösungen posten.
2.) Du könntest anstelle cx_freeze auch Py2Exeoder PyInstallerverwenden.
Auch wenn ich bei Punkt 2) letztere Variante bevorzuge und für (für Windows) am einfachsten zu handhaben finde, gibt es immer mit zunehmenden 3rd Party Libraryzuwachs Probleme beim Paketieren von Python (o. auch anderen Interpretierten Sprachen + Interpreter) Sourcen in Binary-Form.
>>Masaru<<
1.) Du könntest uns die cx_freeze Fehlermeldungen zeigen, vielleicht kann hier einer etwas mehr damit anfangen und Lösungen posten.
2.) Du könntest anstelle cx_freeze auch Py2Exeoder PyInstallerverwenden.
Auch wenn ich bei Punkt 2) letztere Variante bevorzuge und für (für Windows) am einfachsten zu handhaben finde, gibt es immer mit zunehmenden 3rd Party Libraryzuwachs Probleme beim Paketieren von Python (o. auch anderen Interpretierten Sprachen + Interpreter) Sourcen in Binary-Form.
>>Masaru<<
Hallo Masaru,
erst einmal Danke für die Antwort. Natürlich bekommt ihr die Fehlermeldungen von cxfreeze wenn ihr sie wollt:
Insgesamt sind folgende Module importiert:
decimal
time
os
locale
Das mit PyInstaller wäre (wenn es funktioniert) eine Möglichkeit, ich weiß leider nur nicht wirklich wie ich es installiere und anwende
erst einmal Danke für die Antwort. Natürlich bekommt ihr die Fehlermeldungen von cxfreeze wenn ihr sie wollt:
Mein Programm besitzt eine Datei, in der die ganzen Funktionen zur Berechnung sitzen, und ein Programm, welches das Menü etc. repräsentiert und die Funktionen korrekt aufruft.C:\Users\***\Desktop\Programm\Source>cxfreeze Programm.py
Traceback (most recent call last):
File "C:\Python31\Scripts\cxfreeze", line 5, in <module>
main()
File "C:\Python31\lib\site-packages\cx_Freeze\main.py", line 188, in main
freezer.Freeze()
File "C:\Python31\lib\site-packages\cx_Freeze\freezer.py", line 435, in Freeze
self._FreezeExecutable(executable)
File "C:\Python31\lib\site-packages\cx_Freeze\freezer.py", line 126, in _Freez
eExecutable
scriptModule = finder.IncludeFile(exe.script, exe.moduleName)
File "C:\Python31\lib\site-packages\cx_Freeze\finder.py", line 459, in Include
File
deferredImports)
File "C:\Python31\lib\site-packages\cx_Freeze\finder.py", line 310, in _LoadMo
dule
module.code = compile(codeString, path, "exec")
File "Programm.py", line 1
\ufeffimport time
^
SyntaxError: invalid character in identifier
C:\Users\***\Desktop\Programm\Source>
Insgesamt sind folgende Module importiert:
decimal
time
os
locale
Das mit PyInstaller wäre (wenn es funktioniert) eine Möglichkeit, ich weiß leider nur nicht wirklich wie ich es installiere und anwende
Erstmal Danke für deine Antwort.
Leider hilft mir da von dir geschirebene in keinster Weise weiter...
Der Anfang der beiden Dateien sieht so aus:
Leider hilft mir da von dir geschirebene in keinster Weise weiter...
Der Anfang der beiden Dateien sieht so aus:
import time
from ProgrammFunctions import *
while True: #Endlosschleife, damit das Programm immer wieder von vorne anläuft
[...]
Wo befindet sich dieses Byte-Order-Mark? Und wie kommt es dahin?from decimal import *
#Funktionssammlung Decimal importieren
import time #noetig für den Timestamp
import os #noetig um an das Homeverzeichnis zu gelangen
import locale
locale.setlocale(locale.LC_ALL,'')
Fehler1 = "Eingegebener Wert negativ, Abbruch" #Fehlermeldung bei negativen Werten
[...]
Kannst Du mal Deine Programm.py Datei uns über http://paste.pocoo.org zeigen?
- einfach auf http://paste.pocoo.org gehen
- dort den Inhalt Deiner .py file ins Textfeld hineinkopieren
- links unten im DropDown Menu "Python" auswählen
- [Paste] Button klicken
- und uns die Url hier posten, die dann in der Adressleiste Deines Browsers angezeigt wird
>>Masaru<<
- einfach auf http://paste.pocoo.org gehen
- dort den Inhalt Deiner .py file ins Textfeld hineinkopieren
- links unten im DropDown Menu "Python" auswählen
- [Paste] Button klicken
- und uns die Url hier posten, die dann in der Adressleiste Deines Browsers angezeigt wird
>>Masaru<<
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Es geht ganz vorne, in den ersten zwei Byte der Datei und wird von deinem Editor nicht angezeigt.heiliga horsd hat geschrieben:Wo befindet sich dieses Byte-Order-Mark? Und wie kommt es dahin?
Und da hin kommt es, weil dein Editor es dort reingesetzt hat. Notepad tut sowas manchmal.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
@masaru:
http://paste.pocoo.org/show/166817/
edit:// Ich hab gegoogelt, Windows-Bordmittel helfen mir anscheinend nicht weiter, das Ubuntu will ich auch nicht extra starten. Ich zieh grad N++ und werde dann berichten, ob es funktioniert hat. Bis dahin schonmal Vielen Dank an alle, die mir geholfen haben!
http://paste.pocoo.org/show/166817/
Ich hab es eigentlich immer mit der IDLE von Python bearbeitet. Wie bekomme ich das jetzt wieder weg, weder Python IDLE, noch Editor zeigen es an!Leonidas hat geschrieben:Es geht ganz vorne, in den ersten zwei Byte der Datei und wird von deinem Editor nicht angezeigt.heiliga horsd hat geschrieben:Wo befindet sich dieses Byte-Order-Mark? Und wie kommt es dahin?
Und da hin kommt es, weil dein Editor es dort reingesetzt hat. Notepad tut sowas manchmal.
edit:// Ich hab gegoogelt, Windows-Bordmittel helfen mir anscheinend nicht weiter, das Ubuntu will ich auch nicht extra starten. Ich zieh grad N++ und werde dann berichten, ob es funktioniert hat. Bis dahin schonmal Vielen Dank an alle, die mir geholfen haben!
Alles funktioniert Wunderbar, Vielen Vielen Dank!!!!
Ich hätte jetzt nur noch eine kleine Frage:
Bei der Ausführung sieht das ganze mit den Umlauten etwas ungewöhnlich aus (ü => ?, ä => " etc.), wenn ich das ganz normal mit Python ausführe passt alles. Was mache ich da falsch?
Ich hätte jetzt nur noch eine kleine Frage:
Bei der Ausführung sieht das ganze mit den Umlauten etwas ungewöhnlich aus (ü => ?, ä => " etc.), wenn ich das ganz normal mit Python ausführe passt alles. Was mache ich da falsch?
- mkesper
- User
- Beiträge: 919
- Registriert: Montag 20. November 2006, 15:48
- Wohnort: formerly known as mkallas
- Kontaktdaten:
Die Windows-Kommandozeile kennt leider nur die Codepages 850 bzw. 437. D.h. du müsstest deine Ausgabe entsprechend kodieren. Alles was nicht in der Codepage drin ist kann nicht dargestellt werden und würde dann einen UnicodeError liefern.heiliga horsd hat geschrieben:Bei der Ausführung sieht das ganze mit den Umlauten etwas ungewöhnlich aus (ü => ?, ä => " etc.), wenn ich das ganz normal mit Python ausführe passt alles. Was mache ich da falsch?
Ok erst einmal vielen Dank für deine Antwort!
Gibt es für mich irgendeine Möglichkeit, die Kodierung vor dem "freezen" ganz flott zu ändern, ohne wieder alles umschreiben zu müssen? Oder existiert da ein anderer Kniff?
Gibt es für mich irgendeine Möglichkeit, die Kodierung vor dem "freezen" ganz flott zu ändern, ohne wieder alles umschreiben zu müssen? Oder existiert da ein anderer Kniff?
Wenn ich nichts übersehen habe, dann sind beide - im Unterschied zu cxfreeze (das ich aber noch nie verwendet habe) - noch nicht fit für Python 3.Masaru hat geschrieben:2.) Du könntest anstelle cx_freeze auch Py2Exeoder PyInstallerverwenden.
Ups ... hast recht ... Frechheit. *hut zieh*numerix hat geschrieben:Wenn ich nichts übersehen habe, dann sind beide - im Unterschied zu cxfreeze (das ich aber noch nie verwendet habe) - noch nicht fit für Python 3.Masaru hat geschrieben:2.) Du könntest anstelle cx_freeze auch Py2Exeoder PyInstallerverwenden.
Weiß denn keiner, wie ich dir Kodierung "quick'n dirty" ändern kann, so dass alles korrekt von der Windows-Shell dargestellt werden kann?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Also Quick'n'Dirty könnt ich mir vorstellen dass das überschrieben von ``sys.stdout`` zum gewünschten Ergebnis führen könnte. Aber ich habe eine ziemliche Abneigung gegen offensichtlich schlechte Lösungen, daher mag ich dich jetzt nicht auf dumme Ideen bringen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Die saubere Alternative wäre alle Strings vor der Ausgabe in das richtige Encoding zu wandeln und dieses optimalerweise durch den User festlegbar zu machen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Also, sagen wir mal du hast foldenden Code:heiliga horsd hat geschrieben:Und wie mache ich das? (also mit Kodieren und auswählen lassen)
Code: Alles auswählen
print u"Hallo Österreich"
Code: Alles auswählen
print u"Hallo Österreich".encode(user_encoding)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice