Openoffice3.1 pyuno запутанные ошибки

Я пытаюсь получить пример и другие примеры кодов, которые я нахожу для pyuno, работающего с openoffice 3.1.1 и python 2.5 без удачи.

К сожалению, Pyuno не дает никаких подсказок о том, что идет не так.

В [1]: импортировать uno
В [2]: local = uno.getComponentContext()
В [3]: resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", локальный)
---------------------------------------------------------------------------
Com.sun.star.uno.RuntimeException         Traceback (последний вызов был последним)

/opt/openoffice.org/basis3.1/program/ in ()

com.sun.star.uno.RuntimeException:: у объекта 'tuple' нет атрибута 'getTypes', отслеживание следует
обратная связь недоступна

ниже приведен результат выполнения /opt/openoffice.org/basis3.1/program/officehelper.py, который в основном загружает экземпляр автономного офиса и возвращает связанный объект контекста.

den @ ev: /opt/openoffice.org/basis3.1/program> python officehelper.py Traceback (последний вызов был последним): файл "officehelper.py", строка 42, из com.sun.star.connection import NoConnectException Файл "uno.py", строка 273, в _uno_import
    RuntimeException = pyuno.getClass( "com.sun.star.uno.RuntimeException")
RuntimeError: pyuno.getClass: ожидание одного строкового аргумента 

pyuno принимает только 1 аргумент, и это должна быть строка, как определено в http://udk.openoffice.org/source/browse/udk/pyuno/source/module/pyuno_module.cxx?rev=1.14&view=markup я не смог все равно заставить работать pyuno.getClass.

какие-нибудь предложения о том, как заставить работать пиуно?

1 ответ

Решение

В [1]: импорт uno В [2]: local = uno.getComponentContext() В [3]: resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", локальный)

ООП пошло не так, имхо. Я знаю его ОТ, но я пытался заставить УНО работать раньше и сдался. это чистый Стив Йегге Проза (читайте на http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html).

когда вы переводите эти строки в более понятную форму, они выглядят примерно так:

"Пусть" local "будет результатом вызова метода" get component context "из" uno ". Пусть" service manager "будет атрибутом" service manager "для" local ". Пусть" resolver "будет результатом вызова" сервис-менеджер 'метод' создать экземпляр с контекстом ', используя аргументы' com sun star bridge uno url resolver 'и' local '. "

О, мой бог. нет ничего удивительного в том, что что-то не так с программой, которая является настолько жестокой, чрезмерно специфичной, запутанной и самореферентной, хотя и не осознает себя... вы вызываете подметод "local", и этот под-метод нужно сказать что значит "местный"? чего-чего? снимаю шляпу перед бесстрашными разработчиками, которые могут прорваться сквозь это. счастливой отладки.

ДОБАВЛЕНО:

Спасибо за комментарий и баллы.

проблема с пиуно, с которой я ничего не могу поделать, но я призываю придерживаться терпеливого подхода к тристримам с четкими сроками.

я также предлагаю подать откровенную ОШИБКУ с людьми пиуно (если они действительно активны - у меня сложилось впечатление, что это был довольно тихий проект) из-за бессмысленного сообщения об ошибке: рассматриваемый метод запрашивает один строковый аргумент, и он получает один, и он жалуется, что сделал. это настолько бесполезно, насколько разумно объявить ошибку кода.

в такой ситуации я часто заглядываю в источники. но ты уже сделал это, верно?

я ненавижу людей спрашивать в ответ "почему ты хочешь это сделать?" когда я прошу о помощи. однако иногда кто-то (может быть, вы) придумывают другой работоспособный путь в процессе, который не включает в себя решение конкретной проблемы, но помогает решить вышестоящий. Итак, если я могу спросить: какова общая картина?

Другие вопросы по тегам