6 votos

ArcObjects + comtypes en 10.1 y posteriores

¿Alguien ha jugado con Uso de ArcObjects en Python en la versión 10.1?

Estoy teniendo todo tipo de problemas, como TypeError al envolver los módulos ESRI OLB y AttributeError cuando se intenta utilizar un método o una propiedad de un módulo envuelto.

¿Alguien ha tenido más suerte?

0 votos

He eliminado la etiqueta específica de la versión 10.1 porque este mismo error y solución se aplica a las versiones 10.1, 10.2 y 10.3 (y no tenemos una etiqueta 10.x). Además, no es necesario arcgis ya que no hay ninguna etiqueta arcobjects sin ella.

10voto

auramo Puntos 161

A partir de julio de 2015 versión 1.1.2 comtypes tiene el parche de abajo aplicado. :) Instalar con pip desde PyPi o desde github:

pip install comtypes

pip install https://github.com/enthought/comtypes/archive/master.zip

Hay una solución para esto, tomada de los foros de ArcGIS: 10.1 beta y comtipos . Editar comtypes módulo, en PYTHONPATH\lib\site-packages y añada la siguiente entrada al archivo _ctype_to_vartype diccionario en automation.py :

POINTER(BSTR): VT_BYREF|VT_BSTR,

Es posible que también tenga que eliminar automation.pyc , automation.pyo , safearray.pyc y safearray.pyo en la misma carpeta.

Véase también la página 5 de la presentación de Mark Cederholm en el Dev Summit 2012: ArcMap y Python: Cerrando la brecha de VBA y en la cabecera de sus módulos de fragmentos actualizados para 10.0 , 10.1 y 10.2 respectivamente; página de índice: http://pierssen.com/arcgis10/python.htm


Hay un solicitud de extracción para fusionar el parche en el master comtypes; todavía está abierto porque Enthought (con razón) no aplicará los parches sin las pruebas que los acompañan.

0 votos

+1 Por desgracia, esto no lo arregla todo. comtypes.client.GetModule en esriDataSourcesOleDB.olb, esriGlobeCoreUI.olb y esriSchematicControls.olb sigue generando errores de atributo. Además, las coclasas que deberían ser accesibles en esriFramework.olb (como AppROT), no lo son.

0 votos

¿Alguien ha probado esta solución para la 10.2 con resultados?

1 votos

A mí me funciona bien con el arreglo anterior.

1voto

Lea Puntos 16

Para acceder a arcobjects (10.1) a través de python tuve que borrar automation.pyc, automation.pyo, safearray.pyc y safearray.pyo en el comtypes directorio. También he borrado todos los archivos del directorio C:\Users\USER_ID\AppData\Roaming\Python\Python27\comtypes_cache y tuvo que cambiar el

Lista de productos = [esriSystem.esriLicenseProductCodeArcInfo, esriSystem.esriLicenseProductCodeArcEditor, esriSystem.esriLicenseProductCodeArcView]

a [esriSystem.esriLicenseProductCodeAdvanced, esriSystem.esriLicenseProductCodeStandard, esriSystem.esriLicenseProductCodeBasic] .

Lo último que hice fue buscar en la sintaxis todas las cadenas "10.0" y sustituirlas por "10.1".

0 votos

Una alternativa a la eliminación manual de la caché es (re)crear la caché con comtypes.client.GetModule( 'filename.olb' ) . Ver github.com/maphew/arcplus/blob/master/arcplus/ao/test.py (a mí me ha funcionado, puede que a otros no).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X