<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Why doesn't sa Slope get called as expected in python script? in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/why-doesn-t-sa-slope-get-called-as-expected-in/m-p/147907#M11483</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Took the Virtual Campus Creating Python Scripts for Raster Analysis, and the exercise shows me how to enter raster processing steps in the ArcGIS Pro python window, then at the end of the exercise, how to save the window contents to a python file so I could run it in a IDE or tool.&amp;nbsp; I opened the file in IDLE,&amp;nbsp; edited it,&amp;nbsp; tried to run it, but the line "slopeRaster2 = sa.Slope(baseRaster,'DEGREE')"&amp;nbsp;&amp;nbsp; kept blowing up on me.&amp;nbsp; I got it to work by changing the Slope line to arcpy.sa.Slope instead.&amp;nbsp; It seemed to me that in IDLE, Slope might have been going to Slope_3d by default which has two required arguments, inraster and outraster, while sa.Slope only has one required argument.&amp;nbsp; "DEGREE" wasn't working in Slope_3D which thought it was supposed to be the outraster. &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The script exported from the exercise:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="comment token"&gt;# coding: utf-8&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; arcpy
&lt;SPAN class="keyword token"&gt;from&lt;/SPAN&gt; arcpy &lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;
baseRaster &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Raster&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'DEM_elkhorn.tif'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
baseRaster&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;maximum
&lt;SPAN class="comment token"&gt;# 2856.9016113281&lt;/SPAN&gt;
baseRaster&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;minimum
&lt;SPAN class="comment token"&gt;# 2174.0673828125&lt;/SPAN&gt;
baseRaster&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;noDataValue
&lt;SPAN class="comment token"&gt;# -3.4028230607370965e+38&lt;/SPAN&gt;
slopeRaster &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Slope&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'DEM_elkhorn.tif'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'DEGREE'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# Traceback (most recent call last):&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#&amp;nbsp;&amp;nbsp; File "&amp;lt;string&amp;gt;", line 1, in &amp;lt;module&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# NameError: name 'Slope' is not defined&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;from&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sa &lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;
slopeRaster &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Slope&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'DEM_elkhorn.tif'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'DEGREE'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
gThan40 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; slopeRaster &lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;40&lt;/SPAN&gt;
cliff &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; baseRaster &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; baseRaster&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;mean
cliffPresent &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sa&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;GreaterThan&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;cliff&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;160&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
FalconHabitat &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; gThan40 &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; cliffPresent
FalconHabitat&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;save&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"C:\\EsriTraining\\PythonScriptsRaster\\Data\\HabitatOutput.tif"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;After editing a bit to clean up:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; arcpy
&lt;SPAN class="keyword token"&gt;from&lt;/SPAN&gt; arcpy &lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;from&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sa &lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sa
baseRaster &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Raster&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"C:\\EsriTraining\\PythonScriptsRaster\\Data\\DEM_elkhorn.tif"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#slopeRaster = Slope('C:\\EsriTraining\\PythonScriptsRaster\\Data\\DEM_elkhorn.tif', 'DEGREE')&lt;/SPAN&gt;
slopeRaster2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; sa&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Slope&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;baseRaster&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'DEGREE'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
gThan402 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; slopeRaster &lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;40&lt;/SPAN&gt;
cliff2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; baseRaster &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; baseRaster&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;mean
cliffPresent2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sa&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;GreaterThan&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;cliff&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;160&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
FalconHabitat2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; gThan40 &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; cliffPresent
&lt;SPAN class="comment token"&gt;#FalconHabitat2.save("C:\\EsriTraining\\PythonScriptsRaster\\Data\\HabitatOutput2.tif")&lt;/SPAN&gt;

&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would have thought that the lines 1-4 trying every which way to import sa would have been sufficient,&amp;nbsp; but line 6 kept blowing up, and going to line 7 using sa.Slope still wasn't good enough.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But this worked:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="comment token"&gt;# coding: utf-8&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#HabitatScriptEd3.py&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#Created on 8/03/2018 by PH&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#From exercise in ESRI Virtual Campus Course Creating Python Scripts for Raster Analysis&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; arcpy
&lt;SPAN class="keyword token"&gt;from&lt;/SPAN&gt; arcpy &lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;from&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sa &lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;
arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;CheckOutExtension&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"spatial"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
baseRaster &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Raster&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"C:\\EsriTraining\\PythonScriptsRaster\\Data\\DEM_elkhorn.tif"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#slopeRaster = Slope('C:\\EsriTraining\\PythonScriptsRaster\\Data\\DEM_elkhorn.tif', 'DEGREE')&lt;/SPAN&gt;
slopeRaster &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Slope&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;baseRaster&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'DEGREE'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#slopeRaster2 = arcpy.sa.Slope(baseRaster,'DEGREE')&lt;/SPAN&gt;
gThan402 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; slopeRaster &lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;40&lt;/SPAN&gt;
cliff2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; baseRaster &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; baseRaster&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;mean
cliffPresent2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sa&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;GreaterThan&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;cliff2&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;160&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
FalconHabitat2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; gThan402 &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; cliffPresent2
&lt;SPAN class="comment token"&gt;#FalconHabitat2.save("C:\\EsriTraining\\PythonScriptsRaster\\Data\\HabitatOutput2.tif")&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So apparently, the three imports aren't enough to make sa available in a script running outside the Python window. I also need to check out the spatial extension. &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Along the way, I learned there is a different Python version installed for ArcMap 10.6.1 (Python 2.7.14) and for ArcPro 2.2 (Python 3.6.5).&amp;nbsp; You can find the two different versions of IDLE and run the one that is appropriate by searching way down in Program files for idle.pyw. But an easy way to launch the correct version of IDLE is to examine the folder containing the script in File Explorer, right click, and there is a choice provided on which version to use.&amp;nbsp; &lt;A href="https://www.dropbox.com/s/z22101a2149z33x/pythonIDLE.png?dl=0" rel="nofollow noopener noreferrer" target="_blank"&gt;https://www.dropbox.com/s/z22101a2149z33x/pythonIDLE.png?dl=0&lt;/A&gt;&lt;/P&gt;&lt;P&gt;But it turns out with the full name to the Slope method,&amp;nbsp; the script will run in python 2.7.14, the version from ArcMap 10.6.1. &lt;A href="https://www.dropbox.com/s/t9utofy3fydra42/Python27.PNG?dl=0" rel="nofollow noopener noreferrer" target="_blank"&gt;https://www.dropbox.com/s/t9utofy3fydra42/Python27.PNG?dl=0&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have SA licensed in Pro with a local license server, concurrent licensing.&amp;nbsp; &lt;A class="" href="https://www.dropbox.com/s/kbvazf3vzrmm2mr/Screenshot%202018-08-01%2010.58.42.png?dl=0" rel="nofollow noopener noreferrer" target="_blank"&gt;https://www.dropbox.com/s/kbvazf3vzrmm2mr/Screenshot%202018-08-01%2010.58.42.png?dl=0&lt;/A&gt;&amp;nbsp; But how does python in IDLE know this?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; I was real hopeful that &lt;A class="" href="http://pro.arcgis.com/en/pro-app/arcpy/functions/checkoutextension.htm" rel="nofollow noopener noreferrer" target="_blank"&gt;http://pro.arcgis.com/en/pro-app/arcpy/functions/checkoutextension.htm&lt;/A&gt; was the answer since that's exactly my situation.&amp;nbsp; But I got the same error as before.&amp;nbsp; It seems that sa must be getting loaded because print (baseRaster.maximum) returns an answer.&amp;nbsp; The error message seems indicate that python thinks Slope is a variable name that python doesn't know about.&amp;nbsp; But it is not that Slope shouldn't be capitalized.&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt; &lt;A class="" href="https://www.dropbox.com/s/icyrnyhup79k50p/pythonslope.PNG?dl=0" rel="nofollow noopener noreferrer" target="_blank"&gt;https://www.dropbox.com/s/icyrnyhup79k50p/pythonslope.PNG?dl=0&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 08:01:32 GMT</pubDate>
    <dc:creator>PaulHuffman</dc:creator>
    <dc:date>2021-12-11T08:01:32Z</dc:date>
    <item>
      <title>Why doesn't sa Slope get called as expected in python script?</title>
      <link>https://community.esri.com/t5/python-questions/why-doesn-t-sa-slope-get-called-as-expected-in/m-p/147907#M11483</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Took the Virtual Campus Creating Python Scripts for Raster Analysis, and the exercise shows me how to enter raster processing steps in the ArcGIS Pro python window, then at the end of the exercise, how to save the window contents to a python file so I could run it in a IDE or tool.&amp;nbsp; I opened the file in IDLE,&amp;nbsp; edited it,&amp;nbsp; tried to run it, but the line "slopeRaster2 = sa.Slope(baseRaster,'DEGREE')"&amp;nbsp;&amp;nbsp; kept blowing up on me.&amp;nbsp; I got it to work by changing the Slope line to arcpy.sa.Slope instead.&amp;nbsp; It seemed to me that in IDLE, Slope might have been going to Slope_3d by default which has two required arguments, inraster and outraster, while sa.Slope only has one required argument.&amp;nbsp; "DEGREE" wasn't working in Slope_3D which thought it was supposed to be the outraster. &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The script exported from the exercise:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="comment token"&gt;# coding: utf-8&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; arcpy
&lt;SPAN class="keyword token"&gt;from&lt;/SPAN&gt; arcpy &lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;
baseRaster &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Raster&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'DEM_elkhorn.tif'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
baseRaster&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;maximum
&lt;SPAN class="comment token"&gt;# 2856.9016113281&lt;/SPAN&gt;
baseRaster&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;minimum
&lt;SPAN class="comment token"&gt;# 2174.0673828125&lt;/SPAN&gt;
baseRaster&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;noDataValue
&lt;SPAN class="comment token"&gt;# -3.4028230607370965e+38&lt;/SPAN&gt;
slopeRaster &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Slope&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'DEM_elkhorn.tif'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'DEGREE'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# Traceback (most recent call last):&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#&amp;nbsp;&amp;nbsp; File "&amp;lt;string&amp;gt;", line 1, in &amp;lt;module&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# NameError: name 'Slope' is not defined&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;from&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sa &lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;
slopeRaster &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Slope&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'DEM_elkhorn.tif'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'DEGREE'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
gThan40 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; slopeRaster &lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;40&lt;/SPAN&gt;
cliff &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; baseRaster &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; baseRaster&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;mean
cliffPresent &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sa&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;GreaterThan&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;cliff&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;160&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
FalconHabitat &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; gThan40 &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; cliffPresent
FalconHabitat&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;save&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"C:\\EsriTraining\\PythonScriptsRaster\\Data\\HabitatOutput.tif"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;After editing a bit to clean up:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; arcpy
&lt;SPAN class="keyword token"&gt;from&lt;/SPAN&gt; arcpy &lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;from&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sa &lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sa
baseRaster &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Raster&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"C:\\EsriTraining\\PythonScriptsRaster\\Data\\DEM_elkhorn.tif"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#slopeRaster = Slope('C:\\EsriTraining\\PythonScriptsRaster\\Data\\DEM_elkhorn.tif', 'DEGREE')&lt;/SPAN&gt;
slopeRaster2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; sa&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Slope&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;baseRaster&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'DEGREE'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
gThan402 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; slopeRaster &lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;40&lt;/SPAN&gt;
cliff2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; baseRaster &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; baseRaster&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;mean
cliffPresent2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sa&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;GreaterThan&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;cliff&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;160&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
FalconHabitat2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; gThan40 &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; cliffPresent
&lt;SPAN class="comment token"&gt;#FalconHabitat2.save("C:\\EsriTraining\\PythonScriptsRaster\\Data\\HabitatOutput2.tif")&lt;/SPAN&gt;

&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would have thought that the lines 1-4 trying every which way to import sa would have been sufficient,&amp;nbsp; but line 6 kept blowing up, and going to line 7 using sa.Slope still wasn't good enough.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But this worked:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="comment token"&gt;# coding: utf-8&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#HabitatScriptEd3.py&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#Created on 8/03/2018 by PH&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#From exercise in ESRI Virtual Campus Course Creating Python Scripts for Raster Analysis&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; arcpy
&lt;SPAN class="keyword token"&gt;from&lt;/SPAN&gt; arcpy &lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;from&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sa &lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;
arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;CheckOutExtension&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"spatial"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
baseRaster &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Raster&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"C:\\EsriTraining\\PythonScriptsRaster\\Data\\DEM_elkhorn.tif"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#slopeRaster = Slope('C:\\EsriTraining\\PythonScriptsRaster\\Data\\DEM_elkhorn.tif', 'DEGREE')&lt;/SPAN&gt;
slopeRaster &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Slope&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;baseRaster&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'DEGREE'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#slopeRaster2 = arcpy.sa.Slope(baseRaster,'DEGREE')&lt;/SPAN&gt;
gThan402 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; slopeRaster &lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;40&lt;/SPAN&gt;
cliff2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; baseRaster &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; baseRaster&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;mean
cliffPresent2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sa&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;GreaterThan&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;cliff2&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;160&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
FalconHabitat2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; gThan402 &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; cliffPresent2
&lt;SPAN class="comment token"&gt;#FalconHabitat2.save("C:\\EsriTraining\\PythonScriptsRaster\\Data\\HabitatOutput2.tif")&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So apparently, the three imports aren't enough to make sa available in a script running outside the Python window. I also need to check out the spatial extension. &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Along the way, I learned there is a different Python version installed for ArcMap 10.6.1 (Python 2.7.14) and for ArcPro 2.2 (Python 3.6.5).&amp;nbsp; You can find the two different versions of IDLE and run the one that is appropriate by searching way down in Program files for idle.pyw. But an easy way to launch the correct version of IDLE is to examine the folder containing the script in File Explorer, right click, and there is a choice provided on which version to use.&amp;nbsp; &lt;A href="https://www.dropbox.com/s/z22101a2149z33x/pythonIDLE.png?dl=0" rel="nofollow noopener noreferrer" target="_blank"&gt;https://www.dropbox.com/s/z22101a2149z33x/pythonIDLE.png?dl=0&lt;/A&gt;&lt;/P&gt;&lt;P&gt;But it turns out with the full name to the Slope method,&amp;nbsp; the script will run in python 2.7.14, the version from ArcMap 10.6.1. &lt;A href="https://www.dropbox.com/s/t9utofy3fydra42/Python27.PNG?dl=0" rel="nofollow noopener noreferrer" target="_blank"&gt;https://www.dropbox.com/s/t9utofy3fydra42/Python27.PNG?dl=0&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have SA licensed in Pro with a local license server, concurrent licensing.&amp;nbsp; &lt;A class="" href="https://www.dropbox.com/s/kbvazf3vzrmm2mr/Screenshot%202018-08-01%2010.58.42.png?dl=0" rel="nofollow noopener noreferrer" target="_blank"&gt;https://www.dropbox.com/s/kbvazf3vzrmm2mr/Screenshot%202018-08-01%2010.58.42.png?dl=0&lt;/A&gt;&amp;nbsp; But how does python in IDLE know this?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; I was real hopeful that &lt;A class="" href="http://pro.arcgis.com/en/pro-app/arcpy/functions/checkoutextension.htm" rel="nofollow noopener noreferrer" target="_blank"&gt;http://pro.arcgis.com/en/pro-app/arcpy/functions/checkoutextension.htm&lt;/A&gt; was the answer since that's exactly my situation.&amp;nbsp; But I got the same error as before.&amp;nbsp; It seems that sa must be getting loaded because print (baseRaster.maximum) returns an answer.&amp;nbsp; The error message seems indicate that python thinks Slope is a variable name that python doesn't know about.&amp;nbsp; But it is not that Slope shouldn't be capitalized.&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt; &lt;A class="" href="https://www.dropbox.com/s/icyrnyhup79k50p/pythonslope.PNG?dl=0" rel="nofollow noopener noreferrer" target="_blank"&gt;https://www.dropbox.com/s/icyrnyhup79k50p/pythonslope.PNG?dl=0&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 08:01:32 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/why-doesn-t-sa-slope-get-called-as-expected-in/m-p/147907#M11483</guid>
      <dc:creator>PaulHuffman</dc:creator>
      <dc:date>2021-12-11T08:01:32Z</dc:date>
    </item>
  </channel>
</rss>

