Ist es möglich, Python-Anwendungen so zu implementieren, dass Sie den Quellcode nicht freigeben und Sie nicht sicher sein müssen, dass der Kunde Python installiert hat?
Ich denke, vielleicht gibt es einen Installationsprozess, der eine Python-App nur aus den .pyc-Dateien und einer gemeinsam genutzten Bibliothek ausführen kann, die den Interpreter oder etwas ähnliches enthält?
Grundsätzlich bin ich sehr daran interessiert, die Entwicklungsvorteile einer Sprache wie Python zu bekommen - hohe Produktivität usw., kann aber nicht genau sehen, wie Sie es professionell bei einem Kunden einsetzen können, wo Sie nicht wissen, wie die Maschine aufgebaut ist und Sie können die Quelle definitiv nicht liefern.
Wie können professionelle Softwarehäuser, die sich in Python entwickeln, dies tun (oder die Antwort ist, dass sie es nicht tun)?
Sie schützen Ihren Quelltext rechtlich , nicht technologisch . Py-Dateien zu verteilen ist wirklich keine große Sache. Die einzige technologische Lösung hier ist nicht , um Ihr Programm zu versenden (das heutzutage immer populärer wird, da Software über das Internet zur Verfügung gestellt wird und nicht öfter lokal installiert wird.)
Wenn Sie nicht möchten, dass der Benutzer Python installiert, sondern Python-Programme ausführen muss, müssen Sie Python bündeln. Ihr Widerstand scheint mir ziemlich merkwürdig. Java-Programme müssen die Präsenz der JVM bündeln oder antizipieren. C-Programme müssen entweder die Anwesenheit von libc bündeln oder antizipieren (normalerweise letzteres), usw. Es gibt nichts, was daran liegt, das zu verwenden, was Sie brauchen.
Professionelle Python-Desktop-Software bündelt Python, entweder durch etwas wie py2exe / cx_Freeze / eine Inhouse-Sache, die dasselbe tut oder durch Einbetten von Python (in diesem Fall kommt Python als Bibliothek und nicht als ausführbare Datei) . Der erstgenannte Ansatz ist normalerweise viel leistungsfähiger und robuster.
Ja, es ist möglich, Installationspakete zu erstellen. Suchen Sie nach py2exe
, cx_freeze
und anderen.
Nein, der Quellcode ist nicht vollständig sicher. Es gibt immer Möglichkeiten, zu dekompilieren.
Ursprünglicher Quellcode kann trivialerweise von .pyc
Dateien erhalten werden, wenn jemand es tun möchte. Code-Verschleierung würde es schwieriger machen, etwas mit dem Code zu tun.
Nun, es hängt davon ab, was Sie tun möchten. Wenn Sie unter "Nicht freigeben des Quellcodes" meinen, dass "der Kunde nicht in der Lage sein sollte, auf den Quellcode zuzugreifen", dann kämpfen Sie einen verlorenen Kampf. Selbst Programme, die in C geschrieben sind, können schließlich reverse engineered sein. Wenn Sie Angst haben, dass jemand von Ihnen stehlen wird, lassen Sie ihn einen Vertrag unterzeichnen und klagen Sie ihn, wenn es Ärger gibt.
Aber wenn Sie meinen "der Kunde sollte sich nicht um Python-Dateien kümmern und nicht in der Lage sein, beiläufig auf sie zuzugreifen", können Sie eine Lösung wie cx_Freeze , um Ihre Python-Anwendung in eine ausführbare Datei umzuwandeln.
Ich bin überrascht, dass das niemand zuvor erwähnt hat, aber Cython scheint eine brauchbare Lösung für dieses Problem zu sein. Es wird Ihren Python-Code und es in CPython-kompatiblen C-Code transpilieren . Sie erhalten auch einen kleinen Geschwindigkeitsschub (~ 25%, den ich zuletzt überprüft habe), da es in nativen Maschinencode kompiliert wird und nicht nur in Python-Bytecode. Sie müssen immer noch sicher sein, dass der Benutzer Python installiert hat (entweder indem es eine Voraussetzung für den Benutzer darstellt, mit dem er fertig wird, oder wenn er als Teil des Installationsprozesses gebündelt wird). Außerdem müssen Sie mindestens einen kleinen Teil Ihrer Anwendung in reinem Python haben: den Haken in der Hauptfunktion.
Sie würden also etwas Grundlegendes brauchen:
%Vor%Aber das führt effektiv zu keinen Implementierungsdetails. Ich denke, Cython sollte die Kriterien in der Frage erfüllen, aber es bringt auch die zusätzliche Komplexität des Compilierens in C mit sich, wodurch einige der einfachen plattformübergreifenden Eigenschaften von Python verloren gehen. Ob es das wert ist oder nicht, liegt an dir.
Wie andere bereits sagten, könnte selbst der kompilierte C-Code mit ein wenig Aufwand dekompiliert werden, aber es ist wahrscheinlich viel näher an der Art der Verschleierung, auf die Sie ursprünglich gehofft hatten.
Erstellen Sie eine Webanwendung in Python. Dann kann die Welt es über einen Browser ohne Installation verwenden.
Tags und Links python deployment