[gdal-dev] Running GDAL through Python >= 3.8 on Anaconda - DLL load failed

Pedro Venâncio pedrongvenancio at gmail.com
Wed Oct 13 05:05:25 PDT 2021


Hi Even,

Thanks for your help!

Yes, I've tried "set USE_PATH_FOR_GDAL_PYTHON=YES" but the behaviour does
not change.

I believe OSGeo4W shell sets the environment variables through .bat files,
and does not use system path. Am I right, Jurgen? (sorry for calling in CC)

Meanwhile I've found those issue and PR that seems related:
https://github.com/OSGeo/gdal/issues/3898
https://github.com/OSGeo/gdal/pull/3923

Following the steps to reproduce the problem I get the error message:

C:\Users\PedroVenancio\demo.py:

from osgeo import gdal

(arosics) PS C:\Users\PedroVenancio> gdalinfo --versionGDAL 3.3.2,
released 2021/09/01

(arosics) PS C:\Users\PedroVenancio> set USE_PATH_FOR_GDAL_PYTHON=YES
(arosics) PS C:\Users\PedroVenancio> python demo.py
Traceback (most recent call last):  File
"C:\Users\PedroVenancio\anaconda3\envs\arosics\lib\site-packages\osgeo\__init__.py",
line 21, in swig_import_helper    return
importlib.import_module(mname)  File
"C:\Users\PedroVenancio\anaconda3\envs\arosics\lib\importlib\__init__.py",
line 127, in import_module    return
_bootstrap._gcd_import(name[level:], package, level)  File "<frozen
importlib._bootstrap>", line 1014, in _gcd_import  File "<frozen
importlib._bootstrap>", line 991, in _find_and_load  File "<frozen
importlib._bootstrap>", line 975, in _find_and_load_unlocked  File
"<frozen importlib._bootstrap>", line 657, in _load_unlocked  File
"<frozen importlib._bootstrap>", line 556, in module_from_spec  File
"<frozen importlib._bootstrap_external>", line 1166, in create_module
File "<frozen importlib._bootstrap>", line 219, in
_call_with_frames_removedImportError: DLL load failed while importing
_gdal: Impossível localizar o procedimento especificado.During
handling of the above exception, another exception occurred:Traceback
(most recent call last):  File "demo.py", line 1, in <module>    from
osgeo import gdal  File
"C:\Users\PedroVenancio\anaconda3\envs\arosics\lib\site-packages\osgeo\__init__.py",
line 37, in <module>    _gdal = swig_import_helper()  File
"C:\Users\PedroVenancio\anaconda3\envs\arosics\lib\site-packages\osgeo\__init__.py",
line 33, in swig_import_helper    raise ImportError(traceback_string +
'\n' + msg)ImportError: Traceback (most recent call last):  File
"C:\Users\PedroVenancio\anaconda3\envs\arosics\lib\site-packages\osgeo\__init__.py",
line 21, in swig_import_helper    return
importlib.import_module(mname)  File
"C:\Users\PedroVenancio\anaconda3\envs\arosics\lib\importlib\__init__.py",
line 127, in import_module    return
_bootstrap._gcd_import(name[level:], package, level)  File "<frozen
importlib._bootstrap>", line 1014, in _gcd_import  File "<frozen
importlib._bootstrap>", line 991, in _find_and_load  File "<frozen
importlib._bootstrap>", line 975, in _find_and_load_unlocked  File
"<frozen importlib._bootstrap>", line 657, in _load_unlocked  File
"<frozen importlib._bootstrap>", line 556, in module_from_spec  File
"<frozen importlib._bootstrap_external>", line 1166, in create_module
File "<frozen importlib._bootstrap>", line 219, in
_call_with_frames_removedImportError: DLL load failed while importing
_gdal: Impossível localizar o procedimento especificado.On Windows,
with Python >= 3.8, DLLs are no longer imported from the PATH.If
gdalXXX.dll is in the PATH, then set the USE_PATH_FOR_GDAL_PYTHON=YES
environment variableto feed the PATH into os.add_dll_directory().


Are those ones really related?

Thanks Even and Jurgen!

Pedro


Even Rouault <even.rouault at spatialys.com> escreveu no dia quarta,
13/10/2021 à(s) 11:43:

> Pedro,
>
> Did you try to "set USE_PATH_FOR_GDAL_PYTHON=YES" environment variable a
> suggested ?
>
> Can you check if it set in OSGeo4W shell ?  ("echo
> %USE_PATH_FOR_GDAL_PYTHON%")
>
> Wondering if we shouldn't enable that behavior automatically... although
> that we would go against upstream Python policy
>
> Even
> Le 13/10/2021 à 12:14, Pedro Venâncio a écrit :
>
> Hi all,
>
> I'm trying to create an Anaconda environment to run arosics, a software
> that performs automatic subpixel co-registration of two satellite image
> datasets.
>
> The environment seems correctly created, with GDAL working as expected on
> the CLI:
>
> (arosics) PS C:\Users\PedroVenancio> gdalinfo --versionGDAL 3.3.2, released 2021/09/01
>
>
> The problem is that when Python (versions >=3.8) calls GDAL, it gives an
> error:
>
> (arosics) PS C:\Users\PedroVenancio> pythonPython 3.8.12 | packaged by conda-forge | (default, Oct 12 2021, 21:22:46) [MSC v.1916 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>> from osgeo import gdalTraceback (most recent call last):  File "C:\Users\PedroVenancio\anaconda3\envs\arosics\lib\site-packages\osgeo\__init__.py", line 21, in swig_import_helper    return importlib.import_module(mname)  File "C:\Users\PedroVenancio\anaconda3\envs\arosics\lib\importlib\__init__.py", line 127, in import_module    return _bootstrap._gcd_import(name[level:], package, level)  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import  File "<frozen importlib._bootstrap>", line 991, in _find_and_load  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked  File "<frozen importlib._bootstrap>", line 657, in _load_unlocked  File "<frozen importlib._bootstrap>", line 556, in module_from_spec  File "<frozen importlib._bootstrap_external>", line 1166, in create_module  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removedImportError: DLL load failed while importing _gdal: Impossível localizar o procedimento especificado.During handling of the above exception, another exception occurred:Traceback (most recent call last):  File "<stdin>", line 1, in <module>  File "C:\Users\PedroVenancio\anaconda3\envs\arosics\lib\site-packages\osgeo\__init__.py", line 37, in <module>    _gdal = swig_import_helper()  File "C:\Users\PedroVenancio\anaconda3\envs\arosics\lib\site-packages\osgeo\__init__.py", line 33, in swig_import_helper    raise ImportError(traceback_string + '\n' + msg)ImportError: Traceback (most recent call last):  File "C:\Users\PedroVenancio\anaconda3\envs\arosics\lib\site-packages\osgeo\__init__.py", line 21, in swig_import_helper    return importlib.import_module(mname)  File "C:\Users\PedroVenancio\anaconda3\envs\arosics\lib\importlib\__init__.py", line 127, in import_module    return _bootstrap._gcd_import(name[level:], package, level)  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import  File "<frozen importlib._bootstrap>", line 991, in _find_and_load  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked  File "<frozen importlib._bootstrap>", line 657, in _load_unlocked  File "<frozen importlib._bootstrap>", line 556, in module_from_spec  File "<frozen importlib._bootstrap_external>", line 1166, in create_module  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removedImportError: DLL load failed while importing _gdal: Impossível localizar o procedimento especificado.On Windows, with Python >= 3.8, DLLs are no longer imported from the PATH.If gdalXXX.dll is in the PATH, then set the USE_PATH_FOR_GDAL_PYTHON=YES environment variableto feed the PATH into os.add_dll_directory().
>
> I've reported this error in the arosics issue tracker (
> https://git.gfz-potsdam.de/danschef/arosics/-/issues/66), but it seems to
> be working as expected in some similar systems (windows 10).
>
> So I believe it can be some kind of conflict with other installations on
> my machine. I've for instance OSGeo4W and everything works fine:
>
> C:\OSGeo4W>gdalinfo --versionGDAL 3.3.1, released 2021/06/28C:\OSGeo4W>pythonPython 3.9.5 (tags/v3.9.5:0a7dcbd, May  3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>> from osgeo import gdal>>> gdal<module 'osgeo.gdal' from 'C:\\OSGeo4W\\apps\\Python39\\lib\\site-packages\\osgeo\\gdal.py'>
>
>
> Has anyone seen this kind of error? Any hints to overcome?
>
> Thank you very much!
>
> Best regards,
> Pedro
>
>
> _______________________________________________
> gdal-dev mailing listgdal-dev at lists.osgeo.orghttps://lists.osgeo.org/mailman/listinfo/gdal-dev
>
> -- http://www.spatialys.com
> My software is free, but my time generally not.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20211013/b033db72/attachment-0001.html>


More information about the gdal-dev mailing list