Para fins de depuração, criei um condicional codificado que verifica se o script é executado como autônomo ou como uma ferramenta do ArcGIS. Existe alguma maneira de fugir disso em tempo de execução? por exemplo, alguma variável de ambiente, variável global, etc.
por exemplo
dryRun= 1
if dryRun:
par= 'Hello'
else:
par= arcpy.GetParameterAsText(0)
# Do something
sys.executable
será algo diferente quando executado como uma ferramenta de servidor também. Escreva um script de teste que tenha problemasarcpy.AddMessage("Executable: " + sys.executable)
para confirmar.Se entendi sua pergunta corretamente, você deseja verificar se está executando um script como uma ferramenta de script ou não. Se estiver sendo executado como uma ferramenta de script, você deseja definir algumas variáveis usando GetParameterAsText e, se estiver executando como autônomo, deseja usar algumas variáveis codificadas, isso está correto? Nesse caso, você pode fazer o seguinte:
Ao verificar o tamanho de sys.argv, você está determinando quantos parâmetros estão sendo passados para o script. Sempre existe pelo menos um parâmetro (a localização do próprio script), portanto, se houver mais de um, você pode assumir que o ArcGIS os está enviando (a menos que você esteja passando argumentos de outro lugar).
fonte
par = arcpy.GetParameterAsText(0) if len(sys.argv) > 1 else 'Hello'
Uma maneira simples de fazer isso seria assim:
fonte