Seite 1 von 1

Python kompilieren und mit Runtime statisch linken

Verfasst: Samstag 12. Januar 2008, 08:25
von pablo
Hallo Pythoneers,
eine kurze Problemschilderung:

ich will ein in Python geschriebenes und dann zur exe gewrapptes Programm für Windows vertreiben. Jedoch bedarf die python25.dll der msvcr71.dll im Anwendungsordner (und wxPython benötigt msvcp71.dll). Diese dlls darf ich aber nicht redistributen, da ich dazu keine Lizenz besitze.

Eine Lösung wäre, python mit z.B. einer EDU-Version von Visual Studio oder dem kostenlosen VC Toolkit 2003 zu kompilieren und statisch mit der Runtime zu linken. Hier wäre lizenzrechtlich der Weitervertrieb erlaubt.

Leider kenne ich mich mit dem Visual Studio nicht aus und kriege das statische Linken nicht gebacken. Hat dieses Problems schon einmal jemand von hier gelöst oder hat jemand eine andere Idee, wie das Programm ohne Auslieferung der Runtime dlls laufen kann? (Keine Lösung ist es, den Nutzer .NET installieren oder die dlls herunterladen zu lassen).

mit freundlichen Grüssen,
Pablo

Verfasst: Samstag 12. Januar 2008, 09:05
von BlackJack
Dazu gab's in der englischsprachigen Python Newsgroup schon ein paar Threads, die IIRC daraus hinausliefen, dass man die Sachen die Python mit bringt, auch wieder (als Teil von Python) ausliefern darf.

Kannst die Frage vielleicht auch mal in der deutschsprachigen Newsgroup stellen, da liest zum Beispiel Martin v. Löwis mit, der AFAIK die Windowsbuilds und -installer für python.org erstellt.

Verfasst: Samstag 12. Januar 2008, 10:15
von pablo
Hi,
die Threads habe ich gelesen. Mir machte es den Eindruck, als wäre die Aussage, man dürfe die dlls wieder ausliefern, eher eine Vermutung. Ich wäre aber gerne auf der sicheren Seite. Und da diese Frage dort schon diskutiert wurde, wollte ich die Leute dort nicht damit nerven. Ausserdem ist mein Englisch nicht so gut ;) .

Andererseits: liefern alle Python-Entwickler ihre Programme für Windows mit den dlls aus? Das würde ich gerne wissen. Denn dann würde es anscheinend stillschweigend toleriert werden und wäre unwahrscheinlich, dass MS mir ans Bein pinkelt. Aber was ist, wenn die Konkurrenz mir was Böses will?

Gut zu wissen, dass Martin v. Löwis in der deutschen Newsgroup zugegen ist. Dessen Beiträge in der englischen group fand ich recht aufschlussreich. Danke dafür.

Wenn noch jemand einen Tipp zum Kompilieren und Linken mittels Visual Studio parat hat - ich bin ganz Ohr.

Pablo

Verfasst: Samstag 12. Januar 2008, 10:57
von Leonidas
pablo hat geschrieben:Andererseits: liefern alle Python-Entwickler ihre Programme für Windows mit den dlls aus?
Meine Programme für Windows liefere ich als ``.py``-Dateien aus. Wozu brauch ich da DLLs? :twisted:

Verfasst: Samstag 12. Januar 2008, 11:07
von pablo
Leonidas hat geschrieben:
pablo hat geschrieben:Andererseits: liefern alle Python-Entwickler ihre Programme für Windows mit den dlls aus?
Meine Programme für Windows liefere ich als ``.py``-Dateien aus. Wozu brauch ich da DLLs? :twisted:
Du brauchst die dlls nicht - Du hast sie ja schon.

Ich wusste, dass so eine Antwort noch kommt. :roll:

Pablo

Verfasst: Samstag 12. Januar 2008, 11:12
von Leonidas
pablo hat geschrieben:Du brauchst die dlls nicht - Du hast sie ja schon.

Ich wusste, dass so eine Antwort noch kommt. :roll:
Ja eben. Warum das Programm zur EXE wrappen? Das ist weniger portabel, problematischer beim Update und scheinbar auch Lizenzrechtlich problematisch.

Liefer doch Quelltext mit und wenn es sein muss, mach einen Installer der Python mitinstalliert. Voila.

Verfasst: Samstag 12. Januar 2008, 11:15
von sma
Pablo, allgemein gilt: Entweder gibt es eine Lizenz, die du lesen und verstehen musst und anhand der du dann festmachen kannst, was du wie von Python weitergeben kannst, oder du musst davon ausgehen, dass du nichts weiter geben kannst. Auf Hörensagen zu vertrauen ist IMHO der falsche Weg.

Absatz 2 der Lizenz gewährt dem Anwender eine nicht-exklusive Verbreitung von (gemäß Absatz 1) Binärcode und Quelltext, solange die Lizenz und ein Copyright-Vermerk beiliegt. Bindest du Python ein (Absatz 3), musst du beschreiben, was du geändert bzw. ergänzt hast.

Aus meiner unverbindlichen Laienansicht (der du nicht trauen solltest, siehe oben :) ergibt sich hier kein Problem.

Microsofts DLL (und auch Wx) sind natürlich nochmals Dinge, wo du ebenfalls nach einer Lizenz suchen und diese prüfen solltest. Ohne jede Gewähr glaube ich, dass die msvcr71 kein Problem darstellt. Dies ist zwar keine Lizenz, aber zumindest ein offizielles Dokument von Microsoft, das die Möglichkeit zur Weitergabe nahelegt. IBM liefert laut Google bei Tivoli ebenfalls die beiden erwähnten Bibliotheken mit, aber heißt nichts, außer dass es Erfolg haben kann, doch noch etwas nach einer Lizenz von Microsoft zu suchen.

Zu dem Thema, wie man statisch kompiliert, kann ich leider nix sagen.

Stefan

Verfasst: Montag 14. Januar 2008, 13:37
von mkesper
Andere Möglichkeit: Programm unter PythonPortabletesten und dann dieses mitsamt dem Pythonskript weitergeben.