Openoffice3.1 pyuno запутанные ошибки - PullRequest
2 голосов
/ 24 октября 2009

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

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


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 который в основном загружает безголовый офисный экземпляр и возвращает связанный объект контекста.

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.

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

1 Ответ

5 голосов
/ 25 октября 2009

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

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

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

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

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

ДОБАВЛЕНО:

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

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

Я также предлагаю подать откровенную B.U.G. с людьми пиуно (если они действительно активны - у меня сложилось впечатление, что это был довольно тихий проект) из-за бессмысленного сообщения об ошибке: рассматриваемый метод запрашивает один строковый аргумент, и он получает один, и он жалуется это сделал. это настолько бесполезно, насколько разумно объявлять ошибку кода.

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

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

...