Kann ich ein Python-Programm erstellen, es an einen Remote-Computer senden und es dort ausführen, ohne dass auf dem Computer Python installiert ist? Ich habe gehört, dass du das nicht kannst, da Python interpretiert werden muss. Wenn das stimmt, dann scheint es sehr merkwürdig, da es schwierig sein würde, Ihr Programm zu verteilen, wenn nicht jeder beschließen würde, Python zu installieren.
Was ist mit C und C ++? Können sie auf einem Remote-Computer ausgeführt werden, ohne dass die Sprache installiert ist? (Ich denke du kannst es, da es eine kompilierte Sprache ist).
Ich bin mir nicht genau sicher und möchte Klärung.
BEARBEITEN:
Ich bekomme einige gemischte Antworten und bin mir nicht sicher, wohin ich gehen soll. Ich sehe, dass ich die Python-Bibliothek in das Programm aufnehmen kann und ich py2exe verwenden kann.
Ich bin jedoch verwirrt in C und C ++. Muss ich ihre Bibliotheken in das Programm aufnehmen? Können sie nur auf bestimmten Maschinen ausgeführt werden? Ermöglicht der Compiler das Ausführen auf allen Computern?
Sehen Sie sich py2exe und py2app für Windows und Mac an. Macs mit OSX und den meisten modernen Linux-Versionen haben Python jedoch installiert.
C / C ++ - Anwendungen werden normalerweise zu ausführbaren Dateien kompiliert, die auf einer Maschine / Betriebssystem-Architektur arbeiten (z. B. 32-Bit-Windows oder 64-Bit-OSX); Eine solche ausführbare Datei kann auf einigen, aber nicht auf allen Computern ausgeführt werden. Beispielsweise können 64-Bit-Windows- oder OSX-Programme Programme ausführen, die entweder für die 32-Bit- oder 64-Bit-Version ihrer jeweiligen Betriebssysteme erstellt wurden.
Python wird interpretiert, daher wird es nicht ohne Python ausgeführt. Dies bedeutet jedoch nicht, dass Python installiert werden muss, Sie können eine Kopie in Ihr Programmverzeichnis aufnehmen oder sogar Ihr Programm und die Python-Laufzeit in einer einzigen Datei bündeln.
C und C ++ Compiler Toolchains generieren Maschinencode (in den meisten Fällen existieren C-Interpreter wie auch C- und C ++ - & gt; p-Code- und Bytecode-Compiler). Die meisten C- und C ++ - Programme verwenden jedoch gemeinsam genutzte Bibliotheken und können nur ausgeführt werden, wenn die gemeinsam genutzte Bibliothek vorhanden ist (sie muss nicht erneut installiert werden und kann im Programmverzeichnis abgelegt werden). Es gibt auch eine Build-Option (statische Verknüpfung), um alle notwendigen Bibliotheken in die Hauptprogrammdatei aufzunehmen.
Aber das Ergebnis ist immer noch auf eine bestimmte Kombination von Betriebssystem- und CPU-Architektur beschränkt. Das Ausführen eines Programms auf mehr als einer Plattform erfordert immer eine plattformspezifische Laufzeitunterstützung.
Sie können py2exe für die Verteilung von Python-Programmen an Windows verwenden.
Wenn Sie ein Programm in jeder Sprache geschrieben haben und dieses Programm nicht in den Maschinencode übersetzt wird, etwas auf dem Computer des Benutzers muss wandeln Sie es in Maschinencode um, bevor es ausgeführt werden kann.
Im Fall von JavaScript ist "etwas" oft ein Webbrowser. Im Fall von Python ist das oft ein eigenständiger Interpreter, obwohl es möglich ist, es zu kompilieren:
Ist es machbar, Python mit Maschinencode zu kompilieren?
Um jedoch klar zu sein: Nur weil Ihr Programm nicht im Imachine-Code kompiliert wird, bedeutet nicht , dass es interpretiert wird. In C # geschriebene Programme werden normalerweise nach MSIL kompiliert, das kompiliert wird, um den Code zu programmieren, wenn das Programm das erste Mal ausgeführt wird. Java-Programme werden auch bei der ersten Ausführung kompiliert.
Ich werde eine praktische Anwendung des Sendens von Code an eine entfernte Maschine zum Ausführen geben. Dies geschieht in der Regel im BOINC Projekt, einer Community GRID Computing Initiative, die Edelsteine wie SETI @ Home hervorgebracht hat. Die Anwendungen sind in der Regel kompilierte C ++ - Versionen mit Multi-Plattform-Binärdateien für x86-Linux, AMD64-Linux, Win32, Win64 und Mac OS Universal-Binärdateien (mit ppc, x86 und 64-Bit). Dies ist eine große Vielfalt für den Vertrieb, aber ein modernes Make-System kann all das leicht automatisieren (z.B. CMake ).
Viele Leute bevorzugen die WORA-Methode (schreiben Sie einmal irgendwo laufen) und bleiben Sie bei VM-basierten Sprache wie Java oder Python. In diesem Fall verteilen die boinc-Projekte eine Version der VM sowie den darauf laufenden Code. Java VM ist mit Lizenzproblemen behaftet, Python VM ist viel schöner. Boinc versucht, die Python-VM in verschiedenen BOINC-Clients einzubetten , um die Verteilung von Python-basierten GRID-Anwendungen zu vereinfachen.
Ich hoffe, dass Sie dadurch eine Vorstellung von der Anwendungsverteilung erhalten und eine fundierte Entscheidung treffen können.
Es gibt py2exe
, die eine ausführbare Datei erzeugen können, die auf einem anderen Computer ausgeführt wird, ohne dass der Benutzer das normale Python-Paket installiert.
Ja, C und C ++ sind (zumindest normalerweise) als Compiler implementiert, die eigenständige ausführbare Dateien erzeugen können.
Edit: In einem typischen Fall verbindet eine C- oder C ++ - Implementierung die Funktionen der Standardbibliothek , die im Programm verwendet werden, mit der ausführbaren Datei. Dies kann (und tut es oft) eine ganze Menge, die nicht direkt verwendet wird, aber normalerweise nicht (fast überall) die gesamte Standardbibliothek enthält.
In den meisten Fällen können Sie auch eine ausführbare Datei erstellen, die von einer Implementierung der Standardbibliothek abhängt, die bereits auf dem Zielcomputer in Form einer gemeinsam genutzten Bibliothek, DLL usw. vorhanden ist (unterschiedliche Betriebssysteme verwenden unterschiedliche Namen). Dies verringert die Größe der ausführbaren Datei, erhöht jedoch die mit der Verteilung verbundenen Kopfschmerzen; Ich verwende es für Code, den ich auf meiner eigenen Maschine kompiliere, aber im Allgemeinen vermeide ich es, wenn ich eine ausführbare Datei an irgendjemand anderen verteile. Angesichts der aktuellen Festplattenpreise lohnt sich die Einsparung von Speicherplatz kaum.
Schauen Sie in Pyinstaller für eigenständige ausführbare Dateien ohne Python-Integration. Nun, abgesehen von den entscheidenden Bibliotheken kann es laufen!
Es wurde vor kurzem aktualisiert, gut gepflegt und unterstützt sogar Cython-Integration, die jedoch komplex werden kann. Sie können die Dateien komprimieren, um kleiner zu sein, oder wenn Sie mehrere ausführbare Dateien haben, können Sie sie mit einer Datei verknüpfen, um die Größe zu reduzieren.
Sie können natürlich auch eine einzelne ausführbare Datei mit installiertem Python erstellen. Verwenden Sie jedoch nicht Anaconda (verwenden Sie Standard Python 3.6), um sicherzustellen, dass Ihr Programm sehr klein ist.
Hoffe, das hilft.