@Sirius3 ich gehe mit Dir in vielen Dingen einig, aber hier habe ich eine konträre Meinung.
1. C-Compiler
Ich gebe Dir vollkommen recht, das die Bedienung eines C/C++ Compilers für einen Anfänger überfordernd ist.
1.1.
py2exe provide the Microsoft Visual C runtime DLL.
Du brauchst zwingend einen entsprechenden Microsoft C-Compiler installiert, weil Du ansonsten Dein Programm nicht an Andere weiter reichen darfst.
Natürlich kannst Du eine DLL aus Deinem Betriebssystem einfach weitergeben, nur dürfen darfst Du es eben nicht.
Erst wenn Du einen entsprechenden C-Compiler installiert hast, hast Du auch das Recht, die entsprechenden DLLs weiter zu reichen.
Nur so ist Dein Programm redistributable.
Bezogen auf diesen Thread gibt es drei mögliche DLLs, msvcm90.dll, msvcp90.dll und msvcr90.dll aber nur eine davon darfst Du weiterreichen.
In der Regel msvcr90.dll. Neben der DLL musst Du auch das Certifikat, VC90.CRT und das Manifest, VC90.CRT.manifest mit weiterreichen.
Wenn p2exe hier sauber arbeitet, sucht es nach einer entsprechenden Runtime und kopiert nicht nur die benötigte DLL, sondern auch das entsprechende Certifikat und das Manifest.
Here is what Microsoft has to say about distributing these dlls:
https://msdn.microsoft.com/en-us/librar ... s.90).aspx
Was jetzt noch zu 1.1. kommt, ist nicht ganz so wichtig, aber vielleicht gut zu wissen :
Soweit ich das auf die schnelle jetzt nachschauen konnte, ist das alles noch ein klein wenig komplizierter :
Python 2.4 und 2.5 benötigt das Microsoft Visual C++ 2005 Redistributable Package.
Python 2.6 und 2.7 benötigt das Microsoft Visual C++ 2008 Redistributable Package.
Microsoft Visual C++ 2008, SP 1 läuft ausschließlich mit Python 2.7.1 und ansonsten mit keiner anderen Python Version.
Weil es gerade passt, das ist jetzt einmal ein Beispiel, warum ich gegen automatische Updates bin.
Darüber hinaus sollten wir uns auch einmal ehrlich machen, das QT unter einer LGPL Lizenz gar nicht mit den Microsoft Lizenzbestimmungen
zu vereinbaren ist. D.h. ich kann nicht die LGPL Lizenzbestimmungen erfüllen und gleichzeitig die Microsoft Lizenzbestimmungen einhalten.
Es gibt zwei Wege LGPL konform unter Windows zu sein :
1.) alles was zu meiner Software gehört mit dem gcc zu übersetzen, was fast nicht möglich ist, oder
2.) der Kunde installiert alle Module selbst, wozu kaum ein Kunde in der Lage sein dürfte und schon gar nicht Willens.
1.2.
Zu einer entsprechenden Entwicklungsumgebung gehören für mich auch entsprechende Tools wie zum Beispiel
profilehooks -
https://pypi.python.org/pypi/profilehooks.
Die Installation mit pip ist recht einfach. pip install profilehooks. Auch hier wird ein C/C++ Compiler benötigt.
Die Bedienung des C-Compilers erledigt pip. Ich selber muss da nichts weiter machen, nur installiert muss er eben sein.
2. HTTP/2.0
Es ist richtig, welches das RFC erst vor 2 Monate, 14.05.2015 verabschiedet wurde.
HTTP/2 ist jetzt nicht einfach so vom Himmel gefallen, sondern hat eine entsprechende Vorgeschichte,
welche auch erklärt, warum die Browser und Server das heute bereits unterstützen. Google => SPDY => HTTP/2.
Vorteile ? Bitte lesen :
https://http2.akamai.com
Client Browser support :
- Chrome ab Version 41 supports HTTP/2 by default
- Chrome Canary ab Version 43 supports HTTP/2 by default
- Chrome for iOS ab Version 41 supports HTTP/2 by default
- Firefox ab Version 36 supports HTTP/2 by default
- Internet Explorer ab Version 11 supports HTTP/2 by default
- Microsoft Edge supports HTTP/2 by default
- Opera ab Version 28 supports HTTP/2 by default
- Safari ab Version 8.1 supports HTTP/2 by default
Ich denke wir haben mehr als 90% des Marktes.
HTTP/HTTPS Server :
- Apache 2.4.12 supports HTTP/2 via the module mod_h2
- IIS supports HTTP/2
- OpenLiteSpeed 1.3.11 and 1.4.8 support HTTP/2
- LiteSpeed Web Server 5.0 support HTTP/2
- Akamai Edge Servers support HTTP/2
- Jetty 9.3 supports HTTP/2
- nginx plans to support HTTP/2 by the end of 2015
- lighttpd has no support HTTP/2 planned in version 1.x
Ngix hat einen Marktanteil von ca. 14% der Rest ist zu vernachlässigen.
Somit unterstützen ca. 85% aller Server HTTP/2.
Welche Python Module von HTTP/2 jetzt profitieren würden oder könnten, kann ich nicht wirklich verifizieren,
weil ich mich bis jetzt, nicht im Detail, damit auseinander gesetzt habe.
Meine Motivation das überhaupt anzusprechen lag auch darin begründet, das wir hier vor ein paar Tagen in einem andrem Thread,
sehr ausführlich über APP-Entwicklungen für SmartPhones oder Tablets Stellung bezogen haben.
Egal für welchen Weg, native, HTML5+CSS+JavaScript oder eine hybrid Lösung man sich entscheidet, es ist ein relative einfacher Weg,
die Applikation auf HTTP/2 umzustellen. Meist reicht es aus, die Serverkonfiguration entsprechend anzupassen.
Für diejenigen, welche nicht native aufsetzen, ist es aus meiner Sicht schon wichtig, sich einmal mit HTTP/2 zu beschäftigen.
3. Kaum jemand hält seine Programme immer auf dem neusten Patch-Stand
Ich denke, wenn man weiss, was man da wirklich macht, kann man das durchaus so handhaben.
Ich bin das unter Windows so nicht gewohnt.
O.K vielleicht bin ich hier ein wenig zu pingelig, aber ich persönlich bin immer sehr gut damit gefahren.
(keine Release wechsel, sondern nur die Patches)
Um auf das Problem von Sophus zurück zu kommen. Ich habe einmal im Microsoft Developer Network nachgeschaut.
Und siehe da, das Problem ist bekannt. Nachdem ich jetzt wusst wo ich nach suchen musste, habe ich ähnliche Einträge auch hier
-
http://stackoverflow.com/questions/2692 ... name-certs
-
https://github.com/kennethreitz/requests/issues/2028
-
http://stackoverflow.com/questions/2602 ... erts-error
gefunden.
Wobei
https://github.com/kennethreitz/requests/issues/2028 für mich der beste Treffer war.
Das ist auch der Grund warum ich nach den einzelnen Softwareständen (Patches) gefragt hatte.
Wenn ich mir die Fehlermeldungen von Sophus anschaue, haben wir hier das gleiche Problem.
Alles funktioniert ausser requests. Sophus arbeitet mit der Version 2.6 aktuell ist 2.7.
Ich hätte jetzt als nächsten Schritt, ohne Sophus mit den ganzen Links da oben zu belasten, vorgeschlagen requests über pip
zu deinstallieren und anschließend wieder zu installieren. Vielleicht ist irgendeine Datei beschädigt.
py2exe braucht zwingend einen C-Compiler und auch pywin32, also installieren.
Beides gefährdet nicht die vorhandene Installation.
Sollte es danach immer noch nicht funktionieren, hätte ich den gleichen Weg beschritten, wie Du mit Deinem Minimalprogramm,
aber ich wüsste dann, auf welcher Basis ich aufsetze.
Zusammengefasst :
- Das Problem liegt ausschließlich an request.
- py2exe findet das Modul nicht.
- Fehlkonfiguration von py2exe oder möglicherweise ist eine Datei von dem Modul request beschädigt.