Running GDAL scripts in ESRI Model Builder: Difference between revisions
Brian Wilson (talk | contribs) mNo edit summary |
Brian Wilson (talk | contribs) mNo edit summary |
||
Line 4: | Line 4: | ||
I am using the versions of Python, GDAL, and Shapely. | I am using the versions of Python, GDAL, and Shapely. | ||
== Virtualenv installation == | == Virtualenv == | ||
=== 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 | 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 | ||
Line 39: | Line 41: | ||
Then my virtual machine rebooted itself. I think it decided it had had enough of me. Now it's installing Windows updates. How annoying. | 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 | === Virtualenv usage === | ||
Next step: I read the [https://pypi.python.org/pypi/virtualenv#Usage instructions on the virtualenv package page]. | |||
Create a new environment: | |||
C:\Users\bwilson>'''virtualenv arcgis''' | |||
PYTHONHOME is set. You *must* activate the virtualenv before using it | |||
New python executable in arcgis\Scripts\python.exe | |||
Installing setuptools................done. | |||
Installing pip...................done. | |||
This looks promising. It created a new folder 'arcgis' containing Include, Lib, and Scripts folders. There is no "bin" folder per the instructions but there is an activate.bat in Scripts. So let's try that | |||
'''cd arcgis''' | |||
'''Scripts\activate.bat''' | |||
This changes my prompt to prefix arcgis in front of it and when I do 'echo %PATH%' I see it's put itself first. C:\Users\bwilson\arcgis\Scripts is at the start of the path. To leave I just type '''deactivate'''. |
Revision as of 17:58, 14 June 2013
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
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.
Virtualenv usage
Next step: I read the instructions on the virtualenv package page.
Create a new environment:
C:\Users\bwilson>virtualenv arcgis PYTHONHOME is set. You *must* activate the virtualenv before using it New python executable in arcgis\Scripts\python.exe Installing setuptools................done. Installing pip...................done.
This looks promising. It created a new folder 'arcgis' containing Include, Lib, and Scripts folders. There is no "bin" folder per the instructions but there is an activate.bat in Scripts. So let's try that
cd arcgis Scripts\activate.bat
This changes my prompt to prefix arcgis in front of it and when I do 'echo %PATH%' I see it's put itself first. C:\Users\bwilson\arcgis\Scripts is at the start of the path. To leave I just type deactivate.