1

I ran the ModelBuilder to Python script and now my script won't run. It has a problem with the local variables. Is there a fast way to declare all the variables even though some of them are created after the analysis is done?

import arcpy
import os
import sys
# Script arguments
MapUnitPolys = arcpy.GetParameterAsText(0)
if MapUnitPolys == '#' or not MapUnitPolys:
 MapUnitPolys = "MapUnitPolys" # provide a default value if unspecified
PolygonNeighbor_TableSelect1 = arcpy.GetParameterAsText(1)
if PolygonNeighbor_TableSelect1 == '#' or not PolygonNeighbor_TableSelect1:
 PolygonNeighbor_TableSelect1 = "C:/ArcGIS/Default.gdb/PolygonNeighbor_TableSelect1" # provide a default value if unspecified
MapUnitPolys_CopyFeatures5 = arcpy.GetParameterAsText(2)
if MapUnitPolys_CopyFeatures5 == '#' or not MapUnitPolys_CopyFeatures5:
 MapUnitPolys_CopyFeatures5 = "C:/ArcGIS/Default.gdb/MapUnitPolys_CopyFeatures5" # provide a default value if unspecified
# Local variables:
MapUnitPolys = MapUnitPolys
Polygon_Neighbors = Polygon_Neighbor_Table
MapUnitPolys__2_ = "MapUnitPolys"
MapUnitPolys__4_ = MapUnitPolys__2_
MapUnitPolys_PolygonNeighbor1 = "MapUnitPolys_PolygonNeighbor1"
MapUnitPolys_PolygonNeighbor1__2_ = MapUnitPolys_PolygonNeighbor1
Polygon_Neighbor_Table = "C:/ArcGIS/Default.gdb/PolygonNeighbor"
MapUnitPolys__3_ = MapUnitPolys__4_
MapUnitPolys__5_ = "MapUnitPolys"
MapUnitPolys__6_ = MapUnitPolys__5_
# Process: Polygon Neighbors
arcpy.PolygonNeighbors_analysis(MapUnitPolys, Polygon_Neighbor_Table, "OBJECTID;MapUnit", "NO_AREA_OVERLAP", "BOTH_SIDES", "", "METERS", "SQUARE_METERS")
# Process: Select Layer By Attribute
arcpy.SelectLayerByAttribute_management(MapUnitPolys_PolygonNeighbor1, "NEW_SELECTION", "src_MapUnit = nbr_MapUnit")
# Process: Table Select
arcpy.TableSelect_analysis(MapUnitPolys_PolygonNeighbor1__2_, PolygonNeighbor_TableSelect1, "")
# Process: Add Join
arcpy.AddJoin_management(MapUnitPolys__2_, "OBJECTID", PolygonNeighbor_TableSelect1, "src_OBJECTID", "KEEP_ALL")
# Process: Select Layer By Attribute (2)
arcpy.SelectLayerByAttribute_management(MapUnitPolys__4_, "NEW_SELECTION", "PolygonNeighbor_TableSelect1.src_OBJECTID IS NOT NULL")
# Process: Copy Features
arcpy.CopyFeatures_management(MapUnitPolys__3_, MapUnitPolys_CopyFeatures5, "", "0", "0", "0")
# Process: Remove Join
arcpy.RemoveJoin_management(MapUnitPolys__5_, "")

error:

Traceback (most recent call last):
 File "C:\Users\Desktop\help.py", line 28, in <module>
 MapUnitPolys_CopyFeatures5 = arcpy.GetParameterAsText(2)
 File "c:\program files\arcgis\pro\Resources\arcpy\arcpy\__init__.py", line 663, in GetParameterAsText
 return gp.getParameterAsText(index)
 File "c:\program files\arcgis\pro\Resources\arcpy\arcpy\geoprocessing\_base.py", line 233, in getParameterAsText
 self._gp.GetParameterAsText(*gp_fixargs(args, True)))
RuntimeError: Object: Error in getting parameter as text
 Failed to execute (Script3).
asked May 28, 2019 at 19:30
8
  • In PolygonNeighbors_analysis you're supplying out_table as a keyword argument but it's never defined as a variable in the local scope, hence the "not defined" message from the exception. Look up positional versus keyword arguments in Python if you're confused. Commented May 28, 2019 at 21:14
  • @SonofaBeach I switched it back to the original script. Commented May 29, 2019 at 15:28
  • "C:\\\\ArcGIS\\Default.gdb\\PolygonNeighbor" your backslashes are off after the drive. Use single, regular slashes: "C:/ArcGIS/Default.gdb/PolygonNeighbor" Commented May 29, 2019 at 16:02
  • OK. What does that error mean to you? Commented May 29, 2019 at 16:51
  • Sorry, I mean I got the error below. Not sure what it means. @PaulH Commented May 29, 2019 at 16:53

1 Answer 1

2

Unfortunately, the code produced by converting from ModelBuilder to Python script is not guaranteed to run and is difficult to debug for beginners.

That is why performing each step from its tool dialog and using Copy As Python Snippet to paste into a new script is an easier way to learn ArcPy.

Copy As Python Snippet is documented in the ArcGIS Help and can be accessed by using the Main Menu to open the Geoprocessing | Results window.

If you wish to debug your Python code from ModelBuilder then I think you will need to run it to investigate and resolve each error as they arise.

answered May 28, 2019 at 19:41
0

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.