2016-07-05 3 views
0

Ich bin zur Zeit an einem Ort, an dem sie mich gebeten haben, ein eigenständiges Python-Programm zu erstellen, um etwas zu tun (etwa X).
Jetzt soll dieses Programm von einigen Befehlen ausgeführt werden, die von ihrer proprietären Software gesendet werden, die in ihrer eigenen Sprache geschrieben ist. Der Grund, warum ich so oft propriet, ist, dass sie nicht bereit sind, mich irgendwo in die Nähe ihres Codes zu bringen. Ich soll nur einen Python-Code machen, der X basierend auf den Eingaben ihrer Software erstellt.Erstellen eines eigenständigen Python-Skripts, das von einer anderen Software ausgeführt werden kann

Also gibt es eine Möglichkeit, wie ich eine API erstellen und sie um meinen Code wickeln kann, damit die Software es steuern kann? Außerdem muss ich die ganze Sache eigenständig machen (vielleicht ein Installationsprogramm von irgendeiner Art), damit sie Python und die begleitenden Module (wie opencv) nicht installieren müssen, nur um mein Skript auszuführen?

Alles, was ich konnte aus ihnen herauszuholen war: „Es gibt DLL-Dateien, die Ihre App anrufen und wir wollen eine ausführbare Datei“

+2

Warum benötigen Sie eine API? Sind Befehlszeilenargumente nicht ausreichend? – SiHa

+0

https://en.wikipedia.org/wiki/Inter-process_communication –

+0

Die Antwort auf beide Ihre Fragen (möglich, um eine Schnittstelle zu definieren, möglich, um eine ausführbare/Installer zu machen) ist ja, Sie sollten gehen und mehr Forschung zu tun beide. – jonrsharpe

Antwort

0

Jedes Programm kann ein anderes Programm ausführen (wenn es die entsprechenden Rechte hat), so gibt ist keine echte Unterscheidung zwischen "python file" und "python executable" (weil Python eine interpretierte Sprache ist. Die Python-Quelldateien und das "final python program" sind "identisch" (wie cpython), im Gegensatz zu zB C Programm, wo die Quelldateien und die ausführbare Datei sehr unterschiedlich sind).

Wenn Sie auf Windows sind, gibt es das zusätzliche Problem, dass der Benutzer Python installiert haben muss, um .py-Dateien auszuführen. Es gibt einige Möglichkeiten, dieses Problem zu mildern - es gibt Python-Bibliotheken, die den Python-Interpreter und Ihren Code in eine einzige .exe-Datei "einfrieren" (aus dem Kommentar von Bakuriu siehe z. B. freeze). Sie könnten den Python-Interpreter mit Ihrem Code bündeln. Sie können Ihren Benutzern einfach sagen, dass sie Python installieren wollen (wenn die Anzahl der Benutzer niedrig ist, könnte dies der beste Weg sein).

"API" ist nur eine phantastische Art zu sagen "das ist, wie Sie mit meinem Programm kommunizieren". Dies könnte sein, wie Sie eine Bibliothek aufrufen (z. B. welche Funktionen ein Python-Modul exportiert) oder ob dies eine HTTP-API ist oder welche Befehlszeilenargumente übergeben werden oder welches Protokoll über einen TCP-Socket gesprochen wird. Ohne zu wissen, welche API Sie implementieren sollen, können Sie Ihre Aufgabe nicht erfüllen.

Ohne weitere Spezifikationen zu wissen (welche Eingabe gibt das andere Programm Ihrem, wie nennt es Ihr Programm?) Es ist sehr schwer, etwas hilfreicheres zu sagen.

+0

Okay, das löscht eine Menge Dinge. Das System verwendet Windows und eine proprietäre Software. Die Software soll einige Argumente (wie Name, Nummer usw.) an mein Programm senden und mein Programm soll entweder Text oder Bild an die Software zurückgeben. Ich benutze auch die opencv-Bibliothek, und das müsste auch zusammen mit meinem Python-Code gebündelt werden. Macht Pyinstaller (oder andere solche Distutils) das? –

+0

Wie werden die Argumente gesendet? Soll eine Bibliothek oder eine ausführbare Datei programmiert werden? Wie soll der Text/das Bild zurückgegeben werden (Kodierung oder ein Pfad zu einer Bilddatei?)? – syntonym

+0

Das Bündeln von C-Bibliotheken mit einer Python-Anwendung ist immer ein bisschen mühsam, [diese Frage] (http://stackoverflow.com/questions/11477643/packaging-opencv-with-a-python-app) erwähnt cxfreeze. Ich konnte nicht schnell Informationen über pyinstaller und opencv finden, aber ich denke, wenn Sie etwas tiefer graben, sollten Sie einige Informationen finden. – syntonym

Verwandte Themen