Mer

Debugging ArcPy ImportToolBox AttributeError: Object: Tool or environment not found?

Debugging ArcPy ImportToolBox AttributeError: Object: Tool or environment not found?


Jeg prøver å bruke verktøyet ConcatenateRowValues ​​levert av ESRI. Min generelle kode for skriptet mitt fungerer bra bortsett fra når det prøver å bruke ConcantenateRowValues Verktøy. Jeg starter med å importere den riktige verktøykassen og prøver deretter å få skriptet mitt til å få tilgang til det. Nedenfor er koden min for å gjøre dette:

arcpy.ImportToolbox ("C: /Users/'USERNAME'/Desktop/BaseLayer/ConcatenateRowValue101/ConcatenateRowValues101.tbx") arcpy.ConcatenateRowValues_AA (hlint, "SHORT_DESC", "NAME", "NAME"

Feilen som returneres er:

Runtime error Traceback (siste anrop sist): Fil "", linje 67, in Fil "C: Users 'USERNAME' Desktop BaseLayer ConcatenateRowValue101 ConcatenateRowValues101.tbx", linje 54, i ConcatenateRowValues/jVXV+BHwwJ5+Gfgv/wnbP8A+NV2Eo+ZTjHPQ9qwqwqvqwqwqwqwqwqvqwqwqwqwqwqwqwqwqww : Verktøy eller miljø ikke funnet

Dette er en annen feil enn når et ugyldig funksjonsnavn blir kalt påarcpy:

>>> arcpy.ConcatenateRowValuesASDF_AA (hlint, "SHORT_DESC", "NAME", "Hydro_Line", "-") Traceback (siste samtale sist): Fil "", linje 1, in  AttributeError: objektet 'modul' har ingen attributt 'ConcatenateRowValuesASDF_AA'

Det betyr at ArcPy ser modellen, men ikke ønsker å kjøre den. Hvorfor ikke? Hva er årsaken tilVerktøy eller miljø ikke funnetfeil?


Det fungerer for meg hvis jeg eksplisitt angir et alias når jeg ringerImport Toolbox:

arcpy.ImportToolbox ("C: /Users/'USERNAME'/Desktop/BaseLayer/ConcatenateRowValue101/ConcatenateRowValues101.tbx", "thealias") arcpy.ConcatenateRowValues_thealias (hlint, "SHORT_DES", "SHORT_DES" )

Jeg tror du må undersøke egenskapene på nytt for å kontrollere navnet og aliaset du ga til henholdsvis verktøyet og verktøykassen.

Fra hjelpen for ImportToolbox:

Verktøyet identifiseres med verktøynavnet og verktøykassealiaset

I ditt tilfelle:

arcpy.ConcatenateRowValues_AA

  1. Verktøyet ditt skal ha en Navn av ConcatenateRowValues.
  2. Verktøykassen din skal ha en alias av AA

Jeg antar at der spørsmålet ditt sier'USERNAME'du har nettopp redigert det i koden og feilen din, og bruker faktisk et gyldig brukernavn.


Du blander virkelig sammen to forskjellige ting.

Bruk dir (), vars () eller inspiser modulen for å få det du er interessert i (jeg bruker __builtins__ som et eksempel, du kan bruke et hvilket som helst objekt i stedet).

Skriv ut den ordboken hvor du vil:

Pen utskrift er også tilgjengelig i den interaktive feilsøkingen som en kommando:

Du vil ha vars () blandet med pprint ():

Det er mange tredjepartsfunksjoner der ute som legger til ting som unntakshåndtering, utskrift av nasjonale/spesialtegn, gjentagelse i nestede objekter etc. i henhold til forfatterens preferanser. Men de koker alle i utgangspunktet til dette.

dir har blitt nevnt, men det vil bare gi deg attributtenes navn. Hvis du også vil ha verdiene deres, kan du prøve __dict__.