Confluence Retirement

In an effort to consolidate USGS hosted Wikis, myUSGS’ Confluence service is scheduled for retirement on January 27th, 2023. The official USGS Wiki and collaboration space is now SharePoint. Please migrate existing spaces and content to the SharePoint platform and remove it from Confluence at your earliest convenience. If you need any additional information or have any concerns about this change, please contact myusgs@usgs.gov. Thank you for your prompt attention to this matter.
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 35 Next »

What is the Anaconda distribution?

Anaconda is an open-source Python distribution that makes is possible to easily install and manage many pre-packaged third party Python modules. It is a competing fully open-source alternative to the Enthought Python Distribution (EPD).

It has some big advantages over using the Python Esri provides with ArcGIS:

  • Very useful tools and modules not in Esri's standard distribution are available (iPython, pandas, etc).
  • You can install and update the Python stack as a regular (non-pr) user
  • You can install and remove, and update third party packages easily, with Anaconda checking for compatibility for you 
  • A single Python install stack can be used to set up different "virtual environments" 

Workflow

The general workflow to make this happen is to:

  • Install Anaconda without fouling the Windows environment (paths, registry) to break Esri's python stack
  • Configure Anaconda with the particular add-ons you want, and
  • Configure ArcGIS's Python so that it is aware of the appropriate Anaconda content.

1) Install Anaconda (Single-User - no admin access needed)

  1. Go to http://continuum.io/downloads
  2. Download the 32-bit (x86) version of Anaconda (ArcMap [32-bit] can only directly work with 32-bit Python)
  3. In the install dialogs:
    1. Select install for a single user (Not "All Users")
    2. Install to a folder where there is going to be plenty of space (recommend the D drive, not the C drive)
    3. IMPORTANT: To avoid breaking ArcGIS, uncheck the checkboxes  (a) make Anaconda the default Python and (b) add Anaconda's Python to the PATH. 
    4. Here are screenshots to help guide you through the install process.

At this point, you will have full Anaconda version of the python environment that's spiffy and new and totally useless with ArcMap. 

2) Configure Anaconda To Work with ArcGIS

The following workflow will demonstrate how set up a custom Python environment within Anaconda that is similar to that of ArcGIS Python, and then add a compatible version pandas  module. Pandas is great for a whole variety of data processing tasks (just google "python pandas"). If you get this far, you can adapt this workflow to include any other modules you may want.

The following example is for ArcGIS 10.2.2.

A. Find the versions of numpy and matplotlib ArcGIS is using.

Open ArcMap and its Python window, and enter these commands:

>>> import sys, numpy, matplotlib
>>> print(sys.version, numpy.__version__, matplotlib.__version__)
'2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)]', '1.7.1', '1.3.0')

B. Create a custom Anaconda environment (including pandas) that is compatible with ArcGIS 10.2.2.

The critical modules for compatibility are the three above. We'll also include a few others that we know are shipped the ArcGIS 10.2.2's Python stack.

  1. Get to the Anaconda Command Prompt (Start > Search > Anaconda, pick "Anaconda Command Prompt")
  2. Type "conda create -n arc1022 python=2.7.5 numpy=1.7.1 matplotlib=1.3.0 pyparsing=1.5 xlrd=-0.9.2 xlwt=0.7.5" 
  3. Anaconda's conda command will then:
    • Determine that the specified package versions are compatible with each other.
    • Find any packages on which these depend and determine most recent versions that are compatible with what you've asked for, if not completely specified.
    • Show you what it plans to do and prompts you to continue.
    • Download (only) the packages you need to "overlay" onto the base environment to get the environment you have specified.
    • Set up a environment subdirectory, "<Anaconda install folder>/envs/arc1022", installing the downloaded packages into it.

C. Test the virtual environment

Since this new custom environment is not the Anaconda default, you need to let it know that's what you want to use. Then, you'll ask it to tell you what's installed. So, at the Get to the Anaconda Command Prompt, type:

D:\Users\cprice>activate arc1022
Activating environment "arc1022"...
[arc1022] D:\Users\cprice>conda list
# packages in environment at D:\Users\cprice\Anaconda\envs\arc1022:
#
dateutil 2.4.1 py27_0
matplotlib 1.3.0
np17py27_0numpy 1.7.1 py27_3
...
[arc1022] D:\Users\cprice>python
Python 2.7.5 |Continuum Analytics, Inc.| (default, Jul 1 2013, 12:41:55) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

D. More packages

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).

For example, pandas is a very helpful module for working with table manipulations - it s VERY fast compared to doing the same operations with ArcGIS tools.

Specifying python and numpy versions makes sure we get a compatible version of pandas will work seamlessly with arcpy/ArcGIS.

conda install -n arc1022 python=2.7.5 numpy=1.7.1 pandas

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/

3) Configure ArcGIS to see Anaconda and vice versa

This can easily be done with a Python startup script

  1. Install Anaconda, setup environment to match your ArcGIS version
  2. Edit the paths in this script (usercustomize.py.txt) to match your setup
  3. Put the script in the Python user site packages folder (must be named usercustomize.py)
    The user site-packages folder can be found with: "python -m site --user-site".
    This is usually:  C:\Users\%USERNAME%\AppData\Roaming\Python\Python27\site-packages 

 

Testing and Troubleshooting

  1. Start ArcMap, open the Python window
  2. type "import pandas"
  3. type "pandas."
    1. A popup menu with a list of pandas-provided functions is a pretty good sign the install succeeded.

If you get an error message when you try to import, the most common cause I've seen is that the version of the module is still too new. In the pandas example, version 0.10.1 also appears to use the same 1.6.1 version of numpy but for some mysterious ESRI-specific reason that we could not get support to solve or really talk about, pandas 0.10.1 does not work. The solution was to modify the Anaconda "esri" environment to hold 0.10.0 pandas and all worked. To do change this:

  1. Get to the Anaconda Command Prompt (via the Start menu on Windows, e.g.)
  2. Type "conda install -n arc1022 pandas=0.10.0"

References

http://www.continuum.io/blog/conda

How to do a separate Python installation with ArcGIS? (GIS Stack Exchange)

Using ArcPy with Anaconda (PyMorton)

  • No labels