Abwärtskompatible Anwendungen kompilieren

Probleme bei der Installation?
Antworten
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

Hallo,

bin nicht gänzlich unerfahren, was das Programmieren von Anwendungen anbelangt, nur Python ist mir neu. Ins Stocken kam ich gestern bei dem Versuch eine kleine Anwendung mit pyinstaller --onefile zu kompilieren. Der erste Versuch scheiterte und wie ich bei Stack Overflow las, hinkt wohl der Pyinstaller den Python-Versionen etwas hinterher. Als ich dann neben Python 3.6.1 noch Python 3.5 installierte, klappte es mit dem Kompilieren und Windows 10.

Nur die Probleme hörten nicht auf. Habe noch einen alten Rechner mit Windows Vista und wollte nur einmal schauen, ob die Exe dort laufen würde. Sollte dazu vielleicht erwähnen, der Rechner wurde seit einigen Jahren nicht mehr benutzt und war entsprechend lange nicht mehr mit dem Internet verbunden.
Die erste Meldung kam dann von Avira, dass in meiner Datei "TR/Crypt.XPACK.Gen2" ein Virus gefunden wurde. Gut, ein Fehlalarm, möglicherweise hätte es diesen Alarm nicht gegeben, wenn Avira auf einem neueren Stand gewesen wäre. Also Avira deaktiviert, zweiter Versuch. Der endete dann damit, dass die Anwendung nicht ausgeführt werden könnte, weil die "api-ms-win-crt-runtime-l1-1-0.dell" fehlen würde.

Gesucht und gefunden, doch alles was ich fand, klingt etwas verworren oder ich verstehe nur nicht alles.

https://github.com/pyinstaller/pyinstaller/issues/1588
https://github.com/pyinstaller/pyinstaller/issues/1566

Also, wenn man abwärtskompatible Anwendungen entwickeln möchte, müsste man dies auf einen Rechner mit Windows < 10 als Betriebssystem bewerkstelligen?

Und warum schreiben die da so viel von VS 2015?
Ich meine, ich habe zwar diese VS Community Version auf dem Rechner, doch so richtig scheint mir die nicht für Python ausgelegt zu sein. Nun gut, benutze die vielleicht nur zu selten, weil es sich mit Notepad++ einfacher arbeiten lässt und jetzt mit Python ist doch wohl IDLE Run Module zum Testen ausreichend?
BlackJack

@Melewo: Am besten man möchte die Anwendungen nicht ”kompilieren”. Das spart eine Menge Probleme.

Man braucht den C-Compiler von VS 2015, oder halt den passenden mit dem die verwendete Python-Installation kompiliert wurde, um C-Erweiterungen zu übersetzen. Es geht dabei nicht um die IDE. Womit Du Python-Programme schreibst ist Deine Entscheidung.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sieht so aus als ob Dir die visual studio runtime fehlt, auch bekannt als "vcredist.exe". Dabei handelt es sich um global installierte DLLs mit der Laufzeitumgebung fuer C++-Anwendungen. Wenn man als Hersteller eine Software ausliefert, ist eine der Gruende warum man unter Windows einen Installer anbietet, dass diese Umgebung automatisch installiert wird.

Versuch mal https://www.microsoft.com/en-us/downloa ... x?id=48145 runterzuladen & auf deinem Zielsystem zu installieren.
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

BlackJack: Der zweite Teil Deiner Antwort leuchtet mir ein, ist verständlich, an C-Erweiterungen dachte ich nicht.

Der erste Teil, nun ja, Du magst Recht haben, war aber kein motivierender Grund dafür mich mit Python zu beschäftigen. Webanwendungen habe ich genug geschrieben und einige davon zum kostenlosen Download oder zum Einbinden angeboten, da wird halt auch kein Compiler benötigt.
Aber ich wollte mich übers Jahr etwas mehr weg vom Web in Richtung Desktop bewegen. Und vermutlich dürften wohl User mehrheitlich davon ausgehen, wenn sie sich einen Download ziehen, dass sie sich nicht noch zusätzlich eine entsprechende Umgebung downloaden und installieren müssen.

__deets__: Das liest sich beinahe so. Hatte ja nur über Konsole pyinstaller --onefile projekt/datei.py kompiliert und dachte, dass es damit gut wäre und ich VS gar nicht benötigen würde.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du benoetigst auch nicht VS. Du benoetigst die RUNTIME. Das ist schon ein himmelweiter Unterschied. Das eine ist eine Entwicklungsumgebung, das andere im Grunde ein Satz DLLs. Ohne die geht's halt nur nicht.
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

Ich habe die drauf, seit dem 13.04. bereits, wie ich gerade sah. Die hat mir vermutlich MS von sich aus ins Nest gelegt, als ich das letzte Mal das Studio öffnete oder so. Habe zwar jetzt auch noch einmal einen Download gemacht, lässt sich nicht überschreiben, weil bereits die neusten Versionen von diesen Redistributable Packages Laufzeitkomponenten installiert sind.

Das wird auch nicht viel nutzen ohne VS, denke ich mir zumindest, denn so wie ich das kenne, stellt man dort für jedes Projekt einzeln ein, wenn man bei der Release statisch gegen die Runtime linken möchte.
Aber wie ich gerade sehe, so scheint noch mehr nicht zu stimmen, denn meine C-Beispiele mit VS 2015 laufen noch bei Aufruf, laden aber nicht mehr innerhalb vom Studio. Die älteren innerhalb von VS 2008 hingegen scheinbar ohne Probleme.
Antworten