Zu Debugging-Zwecken habe ich eine fest codierte Bedingung erstellt, die überprüft, ob das Skript als eigenständiges oder als ArcGIS-Tool ausgeführt wird. Gibt es überhaupt eine Möglichkeit, dies zur Laufzeit herauszufinden? zB eine Umgebungsvariable, eine globale Variable usw.
z.B
dryRun= 1
if dryRun:
par= 'Hello'
else:
par= arcpy.GetParameterAsText(0)
# Do something
sys.executable
dies auch als Server-Tool etwas anderes sein wird. Schreiben Sie ein Testskript, dasarcpy.AddMessage("Executable: " + sys.executable)
zur Bestätigung ausgegeben wird.Wenn ich Ihre Frage richtig verstehe, möchten Sie überprüfen, ob Sie ein Skript als Skript-Tool ausführen oder nicht. Wenn es als Skript-Tool ausgeführt wird, möchten Sie einige Variablen mit GetParameterAsText festlegen. Wenn es als eigenständiges Tool ausgeführt wird, möchten Sie einige fest codierte Variablen verwenden. Ist dies korrekt? In diesem Fall können Sie Folgendes tun:
Indem Sie die Länge von sys.argv überprüfen, bestimmen Sie, wie viele Parameter an das Skript übergeben werden. Es gibt immer mindestens einen Parameter (den Speicherort des Skripts selbst). Wenn also mehr als ein Parameter übergeben wird, können Sie davon ausgehen, dass ArcGIS diese sendet (es sei denn, Sie übergeben Argumente von einem anderen Ort).
quelle
par = arcpy.GetParameterAsText(0) if len(sys.argv) > 1 else 'Hello'
Ein einfacher Weg wäre dies:
quelle