Ошибка при вызове скрипта Python из базовой функции - PullRequest
0 голосов
/ 30 июня 2018

Я новичок в Python и Basic. Я пытаюсь скопировать функцию IMPORTHTML из Google Sheets в LibreOffice (LO) Calc. Вкратце, я хочу создать базовую функцию GetHtmTable (Url, Table Index) в Calc, которая будет выполнять скрипт Python для выполнения тяжелой работы.

Итак, на основе великолепного примера от Villeroy я реализовал в LO 5.1.6.2. базовая функция SOUNDEX , которая вызывает скрипт Python sheetFunctions.py для ознакомления с процессом. Моя среда Linux Mint 18, я использую Python 3, я импортировал все виды библиотек, такие как Uno, PIP и т. Д. Я использую PycharmProjects в качестве редактора Python.

Я четко вижу в меню инструментов LO Calc-> macro-> organiz macros-> python скрипт sheetFunctions.py Python, который действительно находится в папке /usr/lib/libreoffice/share/Scripts/python.

Когда я запускаю функцию SOUNDEX Basic, я вижу следующее сообщение об ошибке:

ОСНОВНАЯ ошибка во время выполнения. Произошло исключение Тип: com.sun.star.script.provider.ScriptFrameworkErrorException Сообщение: : an произошла ошибка при открытии файла
/usr/lib/libreoffice/program/pythonscript.py:429 в функции getModuleByUrl () [lastRead = self.sfa.getDateTimeModified (url)]
/usr/lib/libreoffice/program/pythonscript.py:993 в функции getScript () [mod = self.provCtx.getModuleByUrl (fileUri)]

Я попытался отладить базовую функцию SOUNDEX и обнаружил, что точка блокировки - это когда программа запускается getScript("vnd.sun.star.script:sheetFunctions.py$soundex?language=Python&location=user").

Я уже несколько дней пытаюсь преодолеть эту ошибку, но безуспешно должен признаться.

Интересно, нужно ли мне добавить какие-нибудь дополнительные расширения в среду Basic или отсутствующую надстройку в Linux / Python?

Я изменил location = user на location = document и снова застрял. Недавно я добавил libreoffice-script-provider-python благодаря команде sudo apt-get install libreoffice-script-provider-python, но это не помогло. Я также включил в документ Calc скрипт Python, но это не решило проблему.

1 Ответ

0 голосов
/ 30 июня 2018

Название местоположения не совпадает. Стандартное место для самописных сценариев находится в каталоге пользователя . Это location=user, например ~/.config/libreoffice/4/user/Scripts/python.

Тогда есть location=share, который относится к пути в вашем вопросе. Эти параметры описаны в Python Script в спецификации URI .

См. Также мой ответ на этот вопрос . Обязательно попробуйте расширение APSO, если вы еще этого не сделали. Особенно APSO помогает при использовании location=document, потому что для встраивания требуется несколько шагов, включая редактирование manifest.xml.

...