3 votos

Por qué la importación de arcview/arceditor da gp.setProduct() RuntimeError: ERROR 999999: ¿Ejecución de error?

Estoy desarrollando un script que se utilizará en ArcGIS Desktop 10.2 de nivel de licencia Standard (antes llamado ArcEditor) y por lo tanto importando arceditor para asegurarme de no utilizar herramientas de GP que requieren nivel de licencia Advanced (antes llamado ArcInfo) (que tengo) mientras desarrollo el script.

Tengo la ERROR 999999: Error executing function al ejecutar el script en PyScripter. Como se indica en el ayuda , hay que importar arceditor antes de importar arcpy. Al ejecutar esta única línea de código:

import arceditor

Al ejecutar esta única línea de código, obtengo el mensaje C:\Program Archivos (x86) \ArcGIS\Desktop10.2\arcpy\arceditor.py abierto en PyScripter y parece que tiene problemas para configurar el producto (esta línea está resaltada):

gp.setProduct("ArcEditor")

He probado a reabrir PyScripter, con el mismo error. import arcview da el mismo error. ¿He entendido bien que se puede configurar usando la licencia Standard (antes llamada ArcEditor) mientras se tiene una licencia de ArcGIS Desktop con Advanced (antes llamada ArcInfo) instalada en la máquina? Si no de esta manera, ¿cómo entonces?

3voto

UnkwnTech Puntos 21942

El 10.2 EstablecerProducto ayuda (10.1 es lo mismo) dice:

El nivel de producto debe establecerse importando el módulo de producto apropiado (arcinfo, arceditor, arcview, arcserver, arcenginegeodb, o arcengine) antes de importar arcpy. La página web La función SetProduct es una función función heredada y no puede establecer el producto una vez que arcpy ha sido importado.

y a partir del ejemplo de código proporcionado allí parece que ahora debería utilizar

# Set the ArcGIS for Desktop Standard product by importing the arceditor module.
import arceditor
import arcpy

Sin embargo, en mi propio portátil con ArcGIS 10.2 para Desktop Standard en Windows 7 SP1 (64 bits) cuando ejecuto la prueba de abajo:

import arcview
import arcpy
print "arcview & arcpy both imported OK!"

Me da el mismo error que a ti - el mío es de IDLE :

Python 2.7.3 (por defecto, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] en win32 Escriba "copyright", "credits" o "license()" para más información.

\================================ RESTART ================================

Traceback (most recent call last): Archivo " C:\temp\test.py ", línea 1, en import arcview Archivo " C:\Program Archivos (x86) \ArcGIS\Desktop10.2\arcpy\arcview.py ", línea 18, en gp.setProduct("ArcView") RuntimeError: ERROR 999999: Error al ejecutar la función.

Pensé que podría haber un error en C:\Program Archivos (x86) \ArcGIS\Desktop10.2\arcpy\arcview.py Así que intenté cambiar "ArcView" por "arcview", y 10.0 por 10.2 (y 10.1) y "10.0" en su código, ¡todo sin éxito!

import arcgisscripting

gp = arcgisscripting.create(10.0)
gp.setProduct("ArcView")

del gp

Creo que has encontrado un error que deberías reportar a tu soporte local de Esri.

3voto

aditya Puntos 111

Dado su comentario actualizado, lo resumiré en una respuesta.

De la sección de ayuda en línea " Acceso a las licencias y extensiones en Python ":

Cuando se utiliza una licencia de ArcGIS for Desktop Basic o Standard, un script debe establecer el producto como Básico o Estándar. Del mismo modo, cuando se utiliza una licencia de Engine o EngineGeoDB, un script debe establecer el producto como Engine o EngineGeoDB. Si una licencia no se establece explícitamente, la licencia se inicializará basándose en el nivel de licencia más alto disponible la primera vez que se acceda a una herramienta, función o clase de ArcPy... Si las licencias necesarias, la herramienta falla y devuelve mensajes de error mensajes . Por ejemplo, si se instala con una licencia de ArcGIS for Desktop Basic e intenta ejecutar una herramienta que requiere una licencia estándar o avanzada, la herramienta fallará. avanzada, la herramienta fallará.

Por lo tanto, con arcpy no se puede "actualizar" o "degradar" a una licencia diferente que no esté disponible para el usuario sin obtener una falla. Por lo tanto, si estás ejecutando CUALQUIER licencia de uso único en tu ordenador, entonces ese es el ÚNICO nivel de licencia que tendrás disponible.

Por ejemplo, si soy un desarrollador con una licencia de ArcInfo y deseo distribuir una herramienta que he desarrollado, sólo puedo probarla como una licencia de ArcInfo. No puedo probar la herramienta como si tuviera una licencia de ArcView. Esto, por supuesto, puede ser bueno y malo.

  1. Si se olvida (o decide no hacerlo) de establecer un nivel de licencia explícito, y tiene un gestor de licencias con licencias disponibles de ArcView, ArcEditor y ArcInfo, siempre cogerá la de ArcInfo. En este caso, usted sabe que todas las herramientas estarán disponibles. Eso es bueno.

  2. Sin embargo, si su herramienta requiere permisos de edición para una geodatabase de empresa, y sus licencias AE y AI ya están siendo consumidas por otros usuarios, tomará la licencia AV, y por supuesto, fallará. Lo mismo puede decirse de las herramientas GP que requieren licencias de nivel superior. Esto, por supuesto, es malo.

En última instancia, sólo necesitas/quieres establecer tu nivel de producto si estás usando un gestor de licencias, y realmente quieres forzar al script a usar uno de los 2 niveles de licencia inferiores.

0voto

Bing ZHENG Puntos 1

Si no tienes licencia disponible y quieres importar una librería relacionada (por ejemplo, si no tienes licencia de editor pero quieres importar arceditor), obtendrás este error. Creo que es un error, así que lo que hicimos fue usar try-catch para atrapar este error.

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