[osgeo4w-dev] PATH ordering for OSGeo4W Shell

Mike Toews mwtoews at gmail.com
Tue Jul 17 20:59:25 PDT 2012


On 18 July 2012 05:09, Matt Wilkie <matt.wilkie at gov.yk.ca> wrote:
> Short term, if you change your "Osgeo4W shell" menu and desktop shortcuts to
> point to
>
> C:\gnu\OSGeo4W\bin\o4w_env.bat
>
> instead of "C:\gnu\Osgeo4W\Osgeo4W.bat" it should insert the o4w dirs to the
> beginning of PATH. This is what Msys is doing.

Perfect, that is sort-of what I did. "o4w_env.bat" doesn't call
cmd.exe, so there is no shell if I update the shortcuts. Instead, I
modified Osgeo4W.bat (as Osgeo4W2.bat), which activates a cmd.exe:

@echo off
rem Root OSGEO4W home dir to the same directory this script exists in
set OSGEO4W_ROOT=%~dp0
rem Convert double backslashes to single
set OSGEO4W_ROOT=%OSGEO4W_ROOT:\\=\%
echo. & echo OSGEO4W home is %OSGEO4W_ROOT% & echo.

call %OSGEO4W_ROOT%bin\o4w_env.bat

rem List available o4w programs
rem but only if osgeo4w called without parameters
rem if [%1]==[] call o-help
@echo on

@if [%1]==[] (cmd.exe /k o-help) else (cmd /c "%*")


> However it's not a clean solution and there's still a chance of
> unpredictable crossover between the two different versions. For example
> something could call a library that isn't installed in Osgeo4W, but is
> present in GWV6, resulting in weird error messages, or worse, no error but
> silently return the wrong results. (I haven't actually seen this happen, I
> just know it's possible.)

So far, so good. Previously, if I tried to use gdal_polygonize:

C:\gnu\OSGeo4W>gdal_polygonize
Traceback (most recent call last):
  File "C:\gnu\OSGeo4W\\bin\gdal_polygonize.py", line 34, in <module>
    import gdal, ogr, osr
  File "C:\gnu\OSGeo4W\apps\Python27\lib\site-packages\gdal.py", line
2, in <module>
    from osgeo.gdal import deprecation_warn
  File "C:\gnu\OSGeo4W\apps\Python27\lib\site-packages\osgeo\__init__.py",
line 21, in <module>
    _gdal = swig_import_helper()
  File "C:\gnu\OSGeo4W\apps\Python27\lib\site-packages\osgeo\__init__.py",
line 17, in swig_import_helper
    _mod = imp.load_module('_gdal', fp, pathname, description)
ImportError: DLL load failed: The specified procedure could not be found.


Now with the modified version it works, loading the correct '_gdal'
library. This is a "fix" in my books.

Thanks for the tips!

-Mike


More information about the osgeo4w-dev mailing list