It is little secret I use a ton of Python to get tasks in ArcGIS done. If serious about getting volumes of data processed with ArcGIS, Python is far and above the way to get things done quickly. If you start venturing far into this world, you will discover a whole raft of great modules created by a healthy community of Python developers available through what is referred to as the Python Package Manager or as it typically known by the command line command, pip.

The idea is simple enough. Python maintains a library of modules anybody can automatically download and use. All you have to do is open up a command line prompt and type pip install <package-name>. It all sounds so easy. The is one little problem. Python packages can be built with and frequently do include C++ code. This C++ code needs to be compiled. Linux and Mac have this decently covered. Windows however, is a gigantic pain to get this working on. This is the Windows challenge. It does not end here, though.

When ArcGIS for Desktop (ArcMap and ArcCatalog) are installed, Python 2.7 32-bit is installed in C:\Python27\ArcGIS10.3. When Background Geoprocessing is installed, Python 2.7 64-bit is installed in C:\Python27\ArcGISx6410.3. If you are like me and also install ArcGIS Pro, you also get Python 3.4 64-bit installed in C:\Python34. Hence, if you have all of ArcGIS for Desktop installed, you have three versions of Python installed and three places where you can theoretically access pip.

Thus, our challenge is two-fold. First, we need a way to compile C++ so we can install Python packages. Second, even if we can compile and install packages, we need to figure out a way to access pip for each Python installation.

Addressing compiling, you can download and install the Windows SDK from Microsoft. This will provide the compiler and other resources needed to compile the packages. When installing, the thing you really need is the C++ compiler. Why this is not better documented someplace, I have no clue. It is a gigantic pain to figure out.

Next up is the challenge of finding and using pip for each of our three installations. Two have it already installed. One does not.

The two installations with pip and the respective locations are:

  • Python 2.7 32-bit C:\Python27\ArcGIS10.3\Scripts
  • Python 3.4 64-bit C:\Python34\Scripts

To get pip on the Python 2.7 64-bit installation, download the Python pip install script Save it somewhere easy to access. If like me, I just saved it to my desktop.

Next, open up the command prompt and navigate to the directory where the Python executable is located.

> cd C:\Python27\ArcGISx6410.3

Finally, directly access the Python 2.7 64-bit executable to run and install pip on this version.

> ./python.exe C:\Users\<userlogin>\Desktop\

Now, we have pip on all three installations of Python. They can all be accessed from their respective Scripts directories.

  • Python 2.7 32-bit C:\Python27\ArcGIS10.3\Scripts
  • Python 2.7 64-bit C:\Python27\ArcGISx6410.3\Scripts
  • Python 3.4 64-bit C:\Python34\Scripts

To install packages found in the Python Package Repository, we can now find something useful such as ArcREST, navigate to each of the installations' Scripts directory and install the package. Hence, for ArcREST:

> cd C:\Python27\ArcGIS10.3\Scripts
> ./pip.exe install arcrest
> cd C:\Python27\ArcGISx6410.3\Scripts
> ./pip.exe install arcrest
> cd C:\Python34\Scripts
> ./pip.exe install arcrest

Redundant? Yes, a little. But now at least you can get packages installed consistently across all three Python installations on your machine!