ich versuche in LibreOffice mittels StarBasic ein Python-Script aufzurufen und Parameter zu übergeben und im Python-Script dannn (testweise) an LibreOffice/Starbasic zurückzugeben.
In LibreOffice (LO) lautet der (funktionierende) Aufruf eines Python-Scripts z.B. wie folgt:
Code: Alles auswählen
oScriptProvider = ThisComponent.getScriptProvider()
oScript = oScriptProvider.getScript("vnd.sun.star.script:jms1.py$resultx?language=Python&location=user")
erg = oScript.invoke(array(), array(), array())
Msgbox erg
Code: Alles auswählen
import sys
def resultx( ):
return("nur ein Test")
Wenn ich das Python-Script nun ändere zu:
Code: Alles auswählen
import sys
def resultx( ):
return(sys.argv)
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.uno.RuntimeException
Message: Error during invoking function resultx in module file:///E:/LO_603/LibreOfficePortable/Data/settings/user/Scripts/python/jms1.py (<class 'AttributeError'>: module 'sys' has no attribute 'argv'
File "E:\LO_603\LibreOfficePortable\App\libreoffice\program\pythonscript.py", line 875, in invoke
ret = self.func( *args )
File "E:\LO_603\LibreOfficePortable\Data\settings\user\Scripts\python\jms1.py", line 10, in resultx
return(sys.argv)
).
OBWOHL dieses Python-Script bei Ausführung mittels Windows-Kommandozeile, zum richtigen Ergebnis führt, d.h. der Pfad/Name des Scripts (Entsprechend sys.argv(0)) werden zurückgegeben.
Code: Alles auswählen
import sys
print(sys.argv)
Was mache ich falsch?
Die interne Python-Version in LO ist 3.5 und ich habe mich überzeugt das "import sys" für dieses(*) Python ausgeführt wird (falls das in Zweifel stehen könnte). Betriebssystem ist Windows 7
(*)
damit meine ich das LO selbst Python mitbringt, ees aber auf demselben System auch weitere Python-Versionen geben kann
Wie eingangs geschrieben, geht es mir eigentlich um Parameterübergabe, aber mein Wissenstand ist das übergebene Parameter über sys.argv ausgelesen werden und sys.argv(0) immer den Pfad+Namen des aktuellen Scripts enthält und deshalb wollte ich zunächst Letzteres testen, hänge aber bereits da fest.
Gruß
Stephan