Openoffice3.1 pyuno混淆错误

时间:2009-10-24 19:24:17

标签: python openoffice.org uno pyuno

我正在尝试获取sample和其他示例代码,我发现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只接受一个参数,并且它是一个字符串,如http://udk.openoffice.org/source/browse/udk/pyuno/source/module/pyuno_module.cxx?rev=1.14&view=markup中所定义 无论如何我无法让pyuno.getClass工作。

关于如何让pyuno工作的任何建议?

1 个答案:

答案 0 :(得分:5)

在[1]中:导入uno 在[2]中:local = uno.getComponentContext() 在[3]中:resolver = local.ServiceManager.createInstanceWithContext(“com.sun.star.bridge.UnoUrlResolver”,local)

OOP出了问题,imho。我知道它的OT,但我试着让uno上班,然后放弃了。这是纯粹的Steve Yegge散文(阅读http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html)。

当你将这些行转换为更易说的形式时,它们大致如下:

“让'本地'成为'uno'调用方法'获取组件上下文'的结果。让'服务管理器'成为'本地'的属性'服务管理器'。让'解析器'成为使用参数'com sun star bridge uno url resolver'和'local'调用'service manager'方法'使用context创建实例'。“

OMG。毫无疑问,一个程序如此恶劣,过于具体,错综复杂,自我指涉而不是自我意识......你称之为“本地”的子方法,并且必须告诉该子方法“本地”是什么意思?说什么?向无能为力的开发人员致敬。快乐的调试。

增加:

征求意见和积分。

pyuno问题我实际上无法做任何事情,但我鼓励在明确的截止日期前坚持患者的试验方法。

我还建议直接提交B.U.G.与pyuno人(如果他们实际上是活跃的 - 我得到的印象,这是一个相当沉默的项目),因为无意义的错误消息:有问题的方法似乎请求一个字符串参数,它得到一个,它抱怨它做了。这对于声明代码错误的合理程度是没有帮助的。

在这种情况下,我经常会查看来源。但你已经这样做了,对吧?

当我寻求帮助时,我讨厌人们回答'你为什么要这样做?'然而,有时某人(也许你)确实在这个过程中提出了另一条可行的路径,一条不包括特定问题的解决方案,但有助于解决上级问题。所以,如果我可以问:大局是什么?