Openoffice3.1 запутанные ошибки pyuno
-
06-07-2019 - |
Вопрос
Я пытаюсь получить образец и другие примеры кодов, которые я нахожу для pyuno, работающие с openoffice 3.1.1 и python 2.5, безуспешно.
К сожалению, пьюно не дает никаких подсказок о том, что идет не так.
In [1]: import uno In [2]: local = uno.getComponentContext() In [3]: resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local) --------------------------------------------------------------------------- com.sun.star.uno.RuntimeException Traceback (most recent call last) /opt/openoffice.org/basis3.1/program/ in () com.sun.star.uno.RuntimeException: : 'tuple' object has no attribute 'getTypes', traceback follows no traceback available
ниже приведен результат выполнения /opt/openoffice.org/basis3.1/program/officehelper.py , который в основном загружает экземпляр office без головы и возвращает связанный контекстный объект.
den@ev:/opt/openoffice.org/basis3.1/program > python officehelper.py Traceback (most recent call last): File "officehelper.py", line 42, in from com.sun.star.connection import NoConnectException File "uno.py", line 273, in _uno_import RuntimeException = pyuno.getClass( "com.sun.star.uno.RuntimeException" ) RuntimeError: pyuno.getClass: expecting one string argument
pyuno принимает только 1 аргумент, и это должна быть строка, как определено в http://udk.openoffice.org/source/browse/udk/pyuno/source/module/pyuno_module.cxx?rev=1.14&view=markup мне все равно не удалось заставить pyuno.getClass работать.
есть какие-нибудь предложения о том, как заставить pyuno работать?
Решение
В [1]:импортируйте uno В [2]:local = uno.getComponentContext() В [3]:распознаватель = локальный.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", локальный)
ООП пошло не так, имхо.я знаю, что это не так, но я уже пытался заставить uno работать раньше и сдался.это чистая проза Стива Йегге (читайте дальше http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html).
когда вы переводите эти строки в более понятную форму, они звучат примерно так:
"Пусть "local" будет результатом вызова метода "get component context" из "uno".Пусть 'service manager' является атрибутом 'service manager' для 'local'.Пусть "распознаватель" будет результатом вызова метода "service manager" "создать экземпляр с контекстом", используя аргументы "com sun star bridge uno url resolver" и "local"."
боже мой.неудивительно, что что-то не так с программой, которая настолько чудовищно сверхспецифична, запутанна и ориентирована на себя, хотя и не осознает себя...вы вызываете подметод "local", и этому подметоду нужно сообщить, что означает "local"?что сказать?снимаю шляпу перед бесстрашными разработчиками, которые могут справиться с этим.счастливой отладки.
ДОБАВЛЕНО:
спасибо за комментарии и замечания.
проблема пьюно, с которой я фактически ничего не могу поделать, но я призываю придерживаться терпеливого подхода к пробам с четкими сроками.
я также предлагаю подать прямой иск против B.U.G.с людьми из pyuno (если они на самом деле активны — у меня сложилось впечатление, что это был довольно тихий проект) из-за бессмысленного сообщения об ошибке:рассматриваемый метод, по-видимому, запрашивает один строковый аргумент, и он получает его, и он жалуется, что это сделал.это настолько бесполезно, что становится разумным объявлять ошибку кода.
в подобных ситуациях я часто заглядываю в источники.но ты ведь уже сделал это, верно?
я ненавижу, когда люди спрашивают в ответ: "Почему ты хочешь это сделать?", когда я прошу о помощи.однако иногда кто-то (возможно, вы) предлагает другой приемлемый путь в процессе, тот, который не включает в себя решение конкретной проблемы, но помогает решить вышестоящую.итак, если я могу спросить:какова общая картина?