Erstellen einer API
Hallo zusammen, ich würde unserer Software gern eine API spendieren. Der geneigte Anwender soll bestimmte Aufrufe zur Verfügung haben. Ein Modul mit entsprechenden Schnittstellen bekomme ich gerade noch so hin :) ... aber wie kann man es einem Anwender relativ einfach machen, dass dieser in den Genuss kommt, die API zu benutzen. Gibt es hier schon best practices? Einige mir bekannter Software mit entsprechender Schnittstelle bringen eine komplette Python-Installation mit. Startet man diese, stehen alle Funktionen zur Verfügung. Dies würde ich fast bevorzugen. Wie realisiert man dies am einfachsten. Unsere Software wird für Windows mittels cx_freeze gebaut und steht dem Anwender als Executable zur Verfügung. Jemand eine Idee, wie man dies am schlauesten angehen kann? Vielen Dank. Gruß, Steffen
Du solltest dich grundsätzlich erst mal zwischen Embedding und Extending entscheiden. Was besser geeignet ist, kommt auf eure Software an und was der Benutzer mit dieser API anstellen können soll. https://docs.python.org/3/extending/index.html Dem manuellen Schreiben einer Extension in C/C++ würde ich aber idR den Einsatz von Cython (http://cython.org) vorziehen. Zu entscheiden, wie das verteilt wird, ist erst der zweite oder dritte Schritt und hängt eher von der Umgebung des Benutzers ab, also welches OS, welche Pythonversion standardmäßig vorhanden ist, (wenn überhaupt), ob normalerweise ein Compiler da ist oder nicht, usw. Chris
On 22.04.2014 22:06, Christopher Arndt wrote:
Du solltest dich grundsätzlich erst mal zwischen Embedding und Extending entscheiden. Was besser geeignet ist, kommt auf eure Software an und was der Benutzer mit dieser API anstellen können soll.
https://docs.python.org/3/extending/index.html
Dem manuellen Schreiben einer Extension in C/C++ würde ich aber idR den Einsatz von Cython (http://cython.org) vorziehen.
Zu entscheiden, wie das verteilt wird, ist erst der zweite oder dritte Schritt und hängt eher von der Umgebung des Benutzers ab, also welches OS, welche Pythonversion standardmäßig vorhanden ist, (wenn überhaupt), ob normalerweise ein Compiler da ist oder nicht, usw.
Chris _______________________________________________ python-de maillist - python-de@python.org https://mail.python.org/mailman/listinfo/python-de Vielen Dank Chris,
das ist schon einmal ein Ansatz und Stoff, wo ich nachlesen kann. Aber eine Frage habe ich gleich. Muss das Ganze in C/C++ erfolgen? Unsere Software selbst ist ja in Python geschrieben und eigentlich möchte ich nur bestimmte Funktionen nach außen verfügbar machen, so dass die Funktionalität der Software in weitere Skripte eingebunden werden kann. Und um diese Funktionalität zu erreichen, suche ich nach einem Weg. Steffen
Warum schreibst Du kein eigenes Modul api.py welches den anderen Code entsprechend importiert und kapselt? Wo ist das wirkliche Problem? Ansonsten...zu wenig Kontext...lass uns bitte nicht raten... Regards Andreas Jung ----- Sorry for being brief - sent from a mobile device.
Am 22.04.2014 um 22:21 schrieb Steffen Frömer
: On 22.04.2014 22:06, Christopher Arndt wrote: Du solltest dich grundsätzlich erst mal zwischen Embedding und Extending entscheiden. Was besser geeignet ist, kommt auf eure Software an und was der Benutzer mit dieser API anstellen können soll.
https://docs.python.org/3/extending/index.html
Dem manuellen Schreiben einer Extension in C/C++ würde ich aber idR den Einsatz von Cython (http://cython.org) vorziehen.
Zu entscheiden, wie das verteilt wird, ist erst der zweite oder dritte Schritt und hängt eher von der Umgebung des Benutzers ab, also welches OS, welche Pythonversion standardmäßig vorhanden ist, (wenn überhaupt), ob normalerweise ein Compiler da ist oder nicht, usw.
Chris _______________________________________________ python-de maillist - python-de@python.org https://mail.python.org/mailman/listinfo/python-de Vielen Dank Chris,
das ist schon einmal ein Ansatz und Stoff, wo ich nachlesen kann. Aber eine Frage habe ich gleich. Muss das Ganze in C/C++ erfolgen? Unsere Software selbst ist ja in Python geschrieben und eigentlich möchte ich nur bestimmte Funktionen nach außen verfügbar machen, so dass die Funktionalität der Software in weitere Skripte eingebunden werden kann. Und um diese Funktionalität zu erreichen, suche ich nach einem Weg.
Steffen _______________________________________________ python-de maillist - python-de@python.org https://mail.python.org/mailman/listinfo/python-de
Steffen, meine Empfehlung wäre, das ganze als Serverchen mit REST aufzubauen: Auf einem konfigurierbaren Port lauscht eure Software auf Anfragen, die als JSON-Paket ankommen, und antwortet ebenso mit JSON-Paketen. Einen Beispiel-Clienten kannst Du dann in Python beilegen. Vorteile: - nur die freigegebenen und dokumentierten Funktionen stehen zur Verfügung - der Beispiel-Client kann gleich zum Test-Client aufgepäppelt werden, womit dann die API-Stabilität über Versionen gegeben ist. - Es ist keine Gefahr unterschiedlicher Berechtigungen - die Kunden könnten auch weniger gute Sprachen, die diese aber evtl. aus anderen Gründen nutzen müssen, zur Ansteuerung eurer Software verwenden. Bester Gruß Harald Am 22. April 2014 21:34 schrieb Steffen Frömer < steffen.froemer@gns-systems.de>:
Hallo zusammen,
ich würde unserer Software gern eine API spendieren. Der geneigte Anwender soll bestimmte Aufrufe zur Verfügung haben. Ein Modul mit entsprechenden Schnittstellen bekomme ich gerade noch so hin :) ... aber wie kann man es einem Anwender relativ einfach machen, dass dieser in den Genuss kommt, die API zu benutzen.
Gibt es hier schon best practices?
Einige mir bekannter Software mit entsprechender Schnittstelle bringen eine komplette Python-Installation mit. Startet man diese, stehen alle Funktionen zur Verfügung. Dies würde ich fast bevorzugen. Wie realisiert man dies am einfachsten.
Unsere Software wird für Windows mittels cx_freeze gebaut und steht dem Anwender als Executable zur Verfügung.
Jemand eine Idee, wie man dies am schlauesten angehen kann?
Vielen Dank. Gruß, Steffen _______________________________________________ python-de maillist - python-de@python.org https://mail.python.org/mailman/listinfo/python-de
-- GHUM GmbH Harald Armin Massa Spielberger Straße 49 70435 Stuttgart 0173/9409607 Amtsgericht Stuttgart, HRB 734971
participants (4)
-
Andreas Jung
-
Christopher Arndt
-
Massa, Harald Armin
-
Steffen Frömer