Ein Python-Modul von Perl aufrufen

7

Ich habe ein Modul in Python erstellt, das ungefähr ein Dutzend Funktionalitäten bietet. Obwohl es hauptsächlich in Python verwendet wird, gibt es einen guten Teil der alten Benutzer, die es von Perl aus aufrufen.

Was ist der beste Weg, um ein Plug-In zu diesem Modul zu machen? Meine Gedanken sind:

  1. Stellen Sie die Funktionen als Befehlszeilen-Dienstprogramme bereit und machen Sie system -Anrufe
  2. Erstellen Sie eine Art von Server und behandeln Sie RPC-Aufrufe (sagen wir über JSON RPC)

Irgendwelche Ratschläge?

    
Escualo 09.08.2010, 15:50
quelle

3 Antworten

19

Eine andere Möglichkeit besteht darin, Python direkt in Ihr Perl-Skript einzufügen, indem Sie Inline::Python verwenden.

Dies ist möglicherweise einfacher als andere Lösungen und erfordert nur ein zusätzliches Modul.

    
mfontani 09.08.2010, 15:53
quelle
9

Kurz gesagt, die einfachste Lösung ist die Verwendung von Inline :: Python. Kurz darauf wird ein Befehlszeilenskript aufgerufen.

Wenn Sie auf lange Sicht einen Server verwenden, um RPC-Funktionalität bereitzustellen oder einfach ein Befehlszeilenskript aufzurufen, erhalten Sie die zukunftssicherste Lösung.

Warum?

Weil Sie auf diese Weise nicht an Perl oder Python als Sprache gebunden sind, die zum Erstellen der Systeme verwendet wird, die die von Ihrer Bibliothek bereitgestellten Dienste nutzen. Bei beiden Methoden wird eine klare, sprachunabhängige Schnittstelle erstellt, die Sie in jeder beliebigen Entwicklungsumgebung verwenden können.

Abhängig von Ihren Bedürfnissen können einige der angebotenen Optionen die "beste Wahl" sein. Abhängig davon, wie sich Ihre Bedürfnisse im Laufe der Zeit entwickeln, kann eine andere Wahl als "beste" enthüllt werden.

Mein Ansatz dazu wäre, ein paar Fragen zu stellen:

Wie oft ändern Sie Entwicklungswerkzeuge? Sie sind von Perl zu Python gewechselt. Hast du mit Tcl angefangen und bist nach Perl gegangen? Wirst du in 1, 5 oder 10 Jahren auf die aufregende neue Sprache X wechseln? Wenn Sie Werkzeuge "oft" ändern (was auch immer das bedeutet), betonen Sie die Kompatibilität mit anderen Werkzeugen.

Wie schnell ist schnell genug? Ist die Startzeit für Befehlszeilenlösungen in Ordnung? Verlangsamt Inline :: Python die Dinge zu sehr (Sie initialisieren immer noch einen Python-Interpreter, der nur in Ihren Perl-Interpreter eingebettet ist)?

Basierend auf den Antworten auf diese Fragen würde ich die einfachste Sache tun, die wahrscheinlich funktioniert .

Meine Vermutung ist, dass das in der Reihenfolge bedeutet:

  1. Inline :: Python
  2. Befehlszeilenskripte
  3. Erstellen Sie einen RPC-Server
daotoad 10.08.2010 05:10
quelle
3
  

Stellen Sie die Funktionen als Befehlszeilenhilfsprogramme zur Verfügung und führen Sie Systemaufrufe durch

Funktioniert wirklich gut. Auf diese Weise sollen Programme wie Python (und Perl) verwendet werden.

    
S.Lott 09.08.2010 16:04
quelle

Tags und Links