2009-10-29 7 views
17

Ich werde bald eine beta app starten und dies haben die Möglichkeit, benutzerdefinierte Integrationsskripte auf Python zu erstellen.Wie stellt man Python für Windows Benutzer bereit?

Die App zielt auf Mac OS X und Windows, und mein Problem ist mit Windows, wo Python normalerweise nicht vorhanden ist.

Mein tatsächlicher Ansatz führt die Python 2.6-Installation automatisch aus. Allerdings habe ich das Problem, dass nicht standardmäßig aktiviert ist und der Pfad nicht festgelegt ist, wenn Sie die command line options verwenden. Und ich befürchte, dass, wenn Python vorher installiert wird und ich auf eine neue Version aufrüste, dies etwas anderes kaputt machen könnte ...

Also frage ich mich, wie das sauber gemacht werden kann. Ist es in Ordnung, wenn ich das gesamte Python 2.6-Verzeichnis kopiere und in ein Unterverzeichnis meiner App lege und alles dort installiere? Oder mit virtualenv ist möglich, verschiedene Versionen von Python (wenn Python ist bereits in der Maschine installiert?).

Ich spiele auch vor dem Einbetten von Python mit einer DLL, und fand es einfach, aber ich verlor die Fähigkeit zu debuggen, so dass ich zu Befehlszeilen-Plug-Ins wechseln.

Ich führe die Plug-Ins über die Befehlszeile aus und lese die Ausgaben STDOUT und STDERR. Die App ist mit Delphi/Lazarus gemacht. Ich installiere andere Module wie JSON und RPC Clients, Win32com, ORM, etc. Ich erstelle das Installationsprogramm mit bitrock.

UPDATE: Die Endbenutzer sind Kleinunternehmer, und die Python-Skripte werden von Entwicklern erstellt. Ich möchte jeden zusätzlichen Schritt in der Bereitstellung vermeiden, also möchte ich ein vollständig integriertes Setup.

+1

Was ist los mit einer Zeile in der README Ihrer Anwendung, die besagt: Downloaden und installieren Sie Python 2.6? Was ist falsch daran, ein MSI mit zwei Teilen zu erstellen, in dem MSI das Python MSI installiert? –

+2

Weil ich eine reibungslose Installationserfahrung möchte;). Ich habe bereits das 2-teilige Setup. Die Python-MSI wird instaliert, aber nicht aktiviert oder der Pfad geändert. Auch ich stelle mich der Situation, wo andere Version von Python bereits installiert ist. – mamcx

+1

Weil die Endnutzer kleine Unternehmen sind. Die Python-Skripte werden von Entwicklern erstellt. Haben Sie einen weiteren Schritt zu tun ist eine Barriere in der Bereitstellung und ich möchte es vermeiden (ist wie das Problem mit .net & Java) – mamcx

Antwort

13

Kopieren Sie einen Ordner Portable Python aus Ihrem Installationsprogramm in den gleichen Ordner wie Ihre Delphi/Lazarus App. Stellen Sie alle Pfade entsprechend ein.

+0

Endlich mache ich so etwas, kopiere den vollständigen Python-Ordner als Unterordner mit allen vorinstallierten Modulen und zeige dann den Pfad dorthin – mamcx

+0

Es ist überraschend, wie häufig die "einfachste Sache, die möglicherweise funktionieren könnte" sich als praktikable Strategie herausstellt. –

11

Sie könnten versuchen, py2exe zu verwenden. Es erstellt eine .exe-Datei mit Python bereits enthalten!

+0

Das funktioniert nicht für mich, weil ein wichtiger Teil des Produkts die Fähigkeit ist, Plugins in Python zu erstellen.Denke wie wenn meine App Apache ist und jeder seine Website in Python oder PHP erstellen kann. – mamcx

4

Integrieren Sie den Python Interpreter in Ihre Delphi App mit P4D. Diese Komponenten funktionieren auch in beide Richtungen (Delphi-Klassen, die Python als Binär-Erweiterungen ausgesetzt sind, und Python-Interpreter in Delphi). Ich habe auch einen Patch für die Lazarus-Kompatibilität auf der Google-Seite "issues" gesehen, aber es scheint, dass dort einige ungelöste Probleme bestehen.

1

Ich denke, es ist kein Problem, .EXE-Pakete mit einem Tool wie PyInstaller oder py2exe und Python-geschriebenen Plugins zu kombinieren. Das erstellte .EXE kann leicht erkennen, wo es installiert ist, und der darin enthaltene Code kann dann einfach import Dateien aus einem bestimmten Plugin-Verzeichnis. Vergessen Sie nicht, dass nach dem Packen eines Python-Skripts in eine ausführbare Datei auch der Python-Interpreter darin enthalten ist. Sie haben also eine vollständige Python-Umgebung, die mit Ihrem eigenen Code angepasst wurde.

+0

Ja ... außer dass das selbe Tool auf osx & linux verfügbar sein wird. Der beste und einfachste Weg ist also die Lieferung von .py-Dateien. – mamcx

+0

Ich verstehe den Kontext des Kommentars nicht, mamcx. Sie können sicher py2exe für alle Plattformen verwenden, und die .py-Plugins müssen nicht geändert werden. –

+0

Laut der Website von py2exe ist nur für Windows ... oder ich vermisse etwas? – mamcx