Para fines de depuración, he creado un condicional codificado que verifica que el script se ejecute de forma independiente o como una herramienta ArcGIS. ¿Hay alguna forma de descubrir esto en tiempo de ejecución? Por ejemplo, alguna variable de entorno, variable global, etc.
p.ej
dryRun= 1
if dryRun:
par= 'Hello'
else:
par= arcpy.GetParameterAsText(0)
# Do something
sys.executable
también será algo diferente cuando se ejecute como una herramienta de servidor. Escriba un script de prueba que emitaarcpy.AddMessage("Executable: " + sys.executable)
para confirmar.Si entiendo su pregunta correctamente, desea verificar si está ejecutando un script como herramienta de script o no. Si se ejecuta como una herramienta de secuencia de comandos, desea establecer algunas variables usando GetParameterAsText, y si se ejecuta de forma independiente, desea utilizar algunas variables codificadas, ¿es esto correcto? Si es así, puede hacer lo siguiente:
Al verificar la longitud de sys.argv, está determinando cuántos parámetros se pasan al script. Siempre hay al menos un parámetro (la ubicación del script en sí), por lo que si se pasa más de uno, puede suponer que ArcGIS los está enviando (a menos que esté pasando argumentos desde otro lugar).
fuente
par = arcpy.GetParameterAsText(0) if len(sys.argv) > 1 else 'Hello'
Una forma simple de hacerlo sería así:
fuente