Python kompilieren und mit Runtime statisch linken

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
pablo
User
Beiträge: 3
Registriert: Mittwoch 2. Januar 2008, 16:54

Python kompilieren und mit Runtime statisch linken

Beitragvon pablo » Samstag 12. Januar 2008, 08:25

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
BlackJack

Beitragvon BlackJack » Samstag 12. Januar 2008, 09:05

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.
pablo
User
Beiträge: 3
Registriert: Mittwoch 2. Januar 2008, 16:54

Beitragvon pablo » Samstag 12. Januar 2008, 10:15

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 12. Januar 2008, 10:57

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:
My god, it's full of CARs! | Leonidasvoice vs Modvoice
pablo
User
Beiträge: 3
Registriert: Mittwoch 2. Januar 2008, 16:54

Beitragvon pablo » Samstag 12. Januar 2008, 11:07

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 12. Januar 2008, 11:12

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Samstag 12. Januar 2008, 11:15

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
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Beitragvon mkesper » Montag 14. Januar 2008, 13:37

Andere Möglichkeit: Programm unter PythonPortabletesten und dann dieses mitsamt dem Pythonskript weitergeben.

Wer ist online?

Mitglieder in diesem Forum: redone