USGS EGIS web pages
EGIS Home
EGIS Support
Metadata
Training
Email Lists
Esri Events
External web pages
Esri Support
Esri Product Help
Esri GeoNet
GIS Stack Exchange
EGIS wiki space (here)
Anaconda is an open-source Python distribution that makes is possible to easily install and manage many pre-packaged third party Python modules.
It has some big advantages over using the Python Esri provides with ArcGIS:
The general workflow to make this happen is to:
The main distribution is pretty large. MiniConda downloads what you need to do to start. Choose the Miniconda that matches the main software you want to integrate with. (You can install both if you want.)
Select install for a single user (Not "All Users")
Anaconda first run
Open the Anaconda prompt window (Search in Windows and start the shortcut "Anaconda Prompt") and enter "python"
(D:\Users\cprice\Miniconda2) C:\Users\cprice>python Python 2.7.13 |Continuum Analytics, Inc.| (default, May 11 2017, 14:07:41) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. Anaconda is brought to you by Continuum Analytics. Please check out: http://continuum.io/thanks and https://anaconda.org >>>
At this point, you have a nice Anaconda Python setup (~ 225 MB) that's spiffy and new and totally useless with ArcMap.
The Department of Interior is now requiring SSL encryption. This means you cannot download Anaconda packages without an SSL certificate in place.
mkdir %USERPROFILE%\.certificates copy %USERPROFILE%\Downloads\DOIRootCA.crt %USERPROFILE%\.certificates conda config --set ssl_verify %USERPROFILE%\.certificates\DOIRootCA.crt
The following workflow will demonstrate how set up a custom Python environment within Anaconda that has the same modules installed as ArcGIS Python, and then add a compatible version of Jupyter notebook.
The following example is for ArcGIS 10.4.1, assuming you have successfully installed MiniConda 2 32-bit (as above).
The critical modules for ArcGIS compatibility can be determined from your Desktop or Pro Python command line.
(Or you can just look at the list below under B.)
# pyversions.py - report critical python stack for use with ArcGIS # example output: # ArcGIS install folder: C:\ArcGIS\Desktop10.4 # sys.executable: C:\Python27\ArcGISx6410.4\pythonw.exe # matplotlib: 1.4.3 # numpy: 1.9.2 # scipy: 0.15.1 import sys import os ff = "{}: {}" try: print("ArcGIS install folder: {}".format(os.environ["AGSDESKTOPJAVA"][:-1])) print(ff.format("sys.executable", sys.executable)) import matplotlib print(ff.format("matplotlib", matplotlib.__version__)) import numpy print(ff.format("numpy", numpy.__version__)) import scipy print(ff.format("scipy", scipy.__version__)) except: pass
We'll also include a few other modules that we know are shipped in the ArcGIS Python stack.
Open an Anaconda command window and load the virtual environment.
C:\Users\cprice> conda info --envs # conda environments: # arc1041 D:\Users\cprice\Miniconda2\envs\arc1041 root * D:\Users\cprice\Miniconda2 D:\Users\cprice>activate arc1041 Activating environment "arc1041"... [arc1022] D:\Users\cprice> conda list # packages in environment at D:\Users\cprice\Miniconda2\envs\arc1041: # dateutil 2.4.1 py27_0 matplotlib 1.3.0 np17py27_0 numpy 1.7.1 py27_3 ...
You can add more packages using conda install, but make sure you specify version numbers for these that won't change the environment's version of python or numpy (or ArcGIS will not be able to use that environment anymore).
Let's add the Jupyter notebook and the Spyder IDE which are both popular additions to your toolbox.
Specifying python, numpy, and matplotlib versions makes sure the environment will still work with ArcGIS, and Anaconda determines the most recent compatible version of pandas (in our case, 0.13.0).
set ARCLIST=python=2.7.10 numpy=1.9.2 matplotlib=1.4.3 scipy=0.16.0 pandas pyparsing xlrd xlwt conda install -n arc1041 %ARCLIST% jupyter spyder ... The following NEW packages will be INSTALLED: ...
You can search for more packages available in conda with conda search.
You're not limited to adding only packages to which conda has access to your new environment. Here's an example on how to install a commonly desired GIS-related package (shapely) into a conda virtual environment using the python pip utility:
http://deparkes.co.uk/2015/01/29/install-shapely-on-anaconda/
This can most easily be done (personal opinion) with a Python usercustomize.py startup script
> C:\Python27\ArcGIS10.4\python.exe <path>\usercustomize.py
(open Anaconda prompt)
> activate arc1041
> python <path>\usercustomize.py
python -m site --user-site
C:\Users\username\AppData\Roaming\Python\Python27\site-packages (ArcGIS Desktop)
C:\Users\username\AppData\Roaming\Python\Python34\site-packages (ArcGIS Pro, Python35 for Pro 2.0)
ArcGIS
print ("\n".join(sys.path)) -- you should see the Anaconda site-packages near the end of the list
Anaconda
activate arc1041 # or whatever appropriate environment you've set up
print ("\n".join(sys.path)) -- you should see ArcGIS site-packages in the list
import arcpy
If you get an error message when you try to import, a common cause is version incompatibilities between Esri's python environment modules and the conda modules. (Condo takes care of compatibility across its environment, but it can't know about versions Esri uses in their python install.) In the pandas example, version 0.10.1 also appears to use the same 1.6.1 version of numpy used by ArcGIS 10.1.x, but some errors occur when trying to import pandas due to some other incompatibility. The solution was to modify the Anaconda environment to use an older version of pandas (0.10.0). The other critical packages are included to avoid having Anaconda install some other incompatible packages.
To modify the python 'stack' for your ArcGIS-friendly virtual environment:
conda install -n arc101 python=2.7.5 matplotlib=1.3.0 numpy=1.6.1
pandas=0.10.0
http://www.continuum.io/blog/conda
How to do a separate Python installation with ArcGIS? (GIS Stack Exchange)
Using ArcPy with Anaconda (PyMorton)