7 votos

Importar funciones en el script lógico del Add-In de python

Me encuentro con un error. Tengo un conjunto de funciones que quiero importar en el script del Add-In de python en el momento de la ejecución, pero cuando construyo el Add-In con la línea "import stats" entonces las herramientas no responden. ¿Alguna sugerencia sobre si es posible importar funciones en el script del complemento?

import arcpy
import os
import pythonaddins
import stats

optfolder = "C:/temp"

class AoI(object):
"""Implementation for rectangle_addin.tool (Tool)"""
    def __init__(self):
        self.enabled = True
        self.cursor = 5
        self.shape = 'Rectangle'
        os.makedirs(optfolder)

    def onRectangle(self, rectangle_geometry):
   """Occurs when the rectangle is drawn and the mouse button is released.
    The rectangle is a extent object."""

        extent = rectangle_geometry
        arcpy.Clip_management(r'C:/temp/ras', "%f %f %f %f" %(extent.XMin, extent.YMin, extent.XMax, extent.YMax),
                              optfolder + '/ras1', "#", "#", "NONE")
        arcpy.RefreshActiveView()

1 votos

¿Podría publicar su código para que podamos ver dónde está colocando la sentencia import?

0 votos

Las importaciones me funcionan bien. ¿Cuál es el módulo de estadísticas? Si es este, no funcionará en Python 2.7: pypi.python.org/pypi/stats/0.1.2a

0 votos

No, no estoy usando eso y en su lugar es una biblioteca hecha a medida para probar con el Add-In. Has probado a importarla desde el Add-In de Python?

17voto

auramo Puntos 161

Si una excepción no manejada, como un ImportError Si se produce antes de que se instancien las clases del complemento, éstas dejarán de responder, recibirán un [Missing] y tienen un símbolo rojo para su icono en el caso de los elementos de las barras de herramientas o de los menús.

Puede confirmar si se está produciendo un error de importación envolviendo su sentencia de importación con un manejador de excepciones y mostrando su mensaje en un cuadro de mensajes, por ejemplo

try:
    import stats
except ImportError as e:
    pythonaddins.MessageBox(e.message, "ImportError")

Screenshot

Sospecho que este es el caso. Tiene que asegurarse de que su stats es realmente descubrible por Python. Si no estás seguro de esto, deberás leer cómo funciona la importación:

NOTA: Si está tratando de empaquetar su stats con su complemento, por ejemplo, colocándolo en el módulo Install junto a su(s) archivo(s) .py del complemento, vea esto rosca que sugiere añadir la siguiente línea a su archivo add-in.py antes de su stats declaración de importación:

sys.path.append(os.path.dirname(__file__))

Tendrá que importar el sys y os módulos antes de eso también.

0 votos

Lo mismo digo, información sucinta muy útil para probar/corregir en 10.2.x, gracias por publicar. Los archivos se copian en el AppData \Local\ESRI\Desktop10.2\AssemblyCache directorio -- Wayne

0 votos

Su pantalla en esta pregunta en img41.imageshack.us/img41/5558/f501a77be06e46189576830.png parece que ya no se puede acceder.

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