Running GDAL scripts in ESRI Model Builder
I have a script that runs fine standalone but I need it to run in ESRI Model Builder. I am doing this for a client. I avoid Model Builder because scripts are maintainable and reliable.
I am using the versions of Python, GDAL, and Shapely.
Virtualenv installation
My GDAL/Shapely script won't run in Model Builder because it sets up its environment for the ESRI version of Python 2.6. This is the symptom
TypeError: cannot create weak reference to 'classobj' object
I believe this means the python interpreter is getting confused and trying to import from the wrong site packages. I think I can use virtualenv to get around this problem.
I found these instructions and I am following them right now. http://www.tylerbutler.com/2012/05/how-to-install-python-pip-and-virtualenv-on-windows-with-powershell/
I had already installed OSGeo4W yesterday, and modified the environment on my desktop Windows 7 (virtual machine) to load it so that I can run python from command line shells. The link above gives help on how to do that so I won't cover it here.
Installation instructions, the compact edition:
- Install OSGeo4W (which includes Python 2.7.4) Get it from http://osgeo4w.osgeo.org/
- Update environment to include these variables
GDAL_DATA C:\OSGed4W\share\gdal GDAL_DRIVER_PATH C:\OSGed4W\bin\gdalplugins PYTHONHOME C:\OSGeo4W\apps\Python27 PATH C:\OSGeo4W\bin;%PATH%;C:\OSGeo4W\apps\Python27\Scripts
- Download and install distribute_setup.py wget http://python-distribute.org/distribute_setup.py
- Run it. It will install itself. python distribute_setup.py
- Download pip. wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
- Install pip. python get-pip.py
- Install virtualenv. pip install virtualenv
The guy that wrote those instructions is apparently a "powershell" user. Why does anyone use powershell? Or Windows?
- I went ahead and did pip virtualenvwrapper-powershell on principal even though I won't touch it
- but also did pip search virtualenv to find what else was available
- and then did pip install virtualenvrwapper-win just in case.
Then my virtual machine rebooted itself. I think it decided it had had enough of me. Now it's installing Windows updates. How annoying.
Next steps: I read the instructions on the virtualenv package page.