Pregunta

Estoy tratando de obtener el muestra y otros códigos de muestra que encuentro Pyuno corriendo con Openoffice 3.1.1 y Python 2.5 sin suerte.

Desafortunadamente, pyuno no da ninguna pista sobre lo que va mal.

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

a continuación se muestra la salida de ejecución de /opt/openoffice.org/basis3.1/program/officehelper.py que básicamente inicia la instancia de office sin cabeza y devuelve un objeto de contexto relacionado.

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 toma solo 1 argumento y tiene que ser una cadena, tal como se define en http://udk.openoffice.org/source/browse/udk/pyuno/source/module/pyuno_module.cxx?rev=1.14&view=markup No pude lograr que Pyuno.getClass funcione de todos modos.

¿Alguna sugerencia sobre cómo hacer que Pyuno funcione?

¿Fue útil?

Solución

En [1]: import uno En [2]: local = uno.getComponentContext () En [3]: resolver = local.ServiceManager.createInstanceWithContext (" com.sun.star.bridge.UnoUrlResolver " ;, local)

OOP ha ido mal, imho. Sé que es el Antiguo Testamento, pero antes intenté que uno trabajara y me rendí. esto es pura Steve Yegge Prose (lea en http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html ).

cuando traduces esas líneas a una forma más fácil de hablar, aparecen aproximadamente como:

" Sea 'local' el resultado del método de llamada 'obtener el contexto del componente' de 'uno'. Deje que el 'administrador de servicios' sea el atributo 'administrador de servicios' de 'local'. Dejemos que 'resolver' sea el resultado de llamar al método 'administrador de servicios' 'crear instancia con contexto', usando los argumentos 'com sun bridge one url resolver' y 'local'. & Quot;

omg. no es de extrañar que algo anda mal con un programa que es tan atrozmente específico, intrincado y autorreferencial sin ser consciente de sí mismo ... llama a un sub-método de 'local' y ese sub-método tiene que ser informado ¿Qué significa 'local'? ¿Que qué? Felicitaciones a los intrépidos desarrolladores que pueden cortar esto. depuración feliz.

AÑADIDO:

gracias por comentarios y puntos.

el problema de los puno no puedo hacer nada, de hecho, pero lo aliento a seguir un enfoque de intento de pacientes con una fecha límite clara.

También sugiero presentar un B.U.G. con la gente pyuno (si de hecho están activas, tengo la impresión de que se trata de un proyecto bastante silencioso) debido al mensaje de error sin sentido: el método en cuestión parece solicitar un argumento de cadena, y recibe uno, y se queja lo hizo. Esto no es tan útil en la medida en que sea razonable declarar un error de código.

En este tipo de situación a menudo miro las fuentes. pero ya lo hiciste, ¿verdad?

Odio que la gente le pregunte "¿por qué quieres hacer esto?" cuando le pido ayuda. sin embargo, a veces alguien (tal vez usted) encuentra otro camino viable en el proceso, uno que no incluye una solución al problema en particular, pero ayuda a resolver el problema superior. Entonces, si puedo preguntar: ¿cuál es el panorama general?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top