[gdal-dev] Running GDAL through Python >= 3.8 on Anaconda - DLL load failed
Even Rouault
even.rouault at spatialys.com
Wed Oct 13 05:17:11 PDT 2021
Le 13/10/2021 à 14:05, Pedro Venâncio a écrit :
> 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)
I'd be curious to know if you could confirm if the OSGeo4W shell does
set it or not
>
> Meanwhile I've found those issue and PR that seems related:
> https://github.com/OSGeo/gdal/issues/3898
> <https://github.com/OSGeo/gdal/issues/3898>
> https://github.com/OSGeo/gdal/pull/3923
> <https://github.com/OSGeo/gdal/pull/3923>
I don't think they are. And that fix is in 3.3.2
But I don't understand why you still get the "On Windows, with Python >=
3.8, DLLs are no longer imported from the PATH." error message.
It shouldn't be emitted because USE_PATH_FOR_GDAL_PYTHON is set:
https://github.com/OSGeo/gdal/blob/f3a83a2c2628219bdc60001580da677758015a60/gdal/swig/python/osgeo/__init__.py#L25
Something weird happening here. Perhaps edit
https://github.com/OSGeo/gdal/blob/f3a83a2c2628219bdc60001580da677758015a60/gdal/swig/python/osgeo/__init__.py#L25
to display os.environ
>
> 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 --version GDAL 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_removed
> ImportError: 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_removed
> ImportError: 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 variable
> to 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
> <mailto: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 --version
>> GDAL 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> python
>> Python 3.8.12 | packaged by conda-forge | (default, Oct 12 2021,
>> 21:22:46) [MSC v.1916 64 bit (AMD64)] on win32
>> Type "help", "copyright", "credits" or "license" for more
>> information.
>>
>> >>> from osgeo import gdal
>> 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_removed
>> ImportError: 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_removed
>> ImportError: 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 variable
>> to 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
>> <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 --version
>> GDAL 3.3.1, released 2021/06/28
>>
>> C:\OSGeo4W>python
>> Python 3.9.5 (tags/v3.9.5:0a7dcbd, May 3 2021, 17:27:52) [MSC
>> v.1928 64 bit (AMD64)] on win32
>> Type "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 list
>> gdal-dev at lists.osgeo.org <mailto:gdal-dev at lists.osgeo.org>
>> https://lists.osgeo.org/mailman/listinfo/gdal-dev <https://lists.osgeo.org/mailman/listinfo/gdal-dev>
>
> --
> http://www.spatialys.com <http://www.spatialys.com>
> My software is free, but my time generally not.
>
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> https://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/fd07385d/attachment-0001.html>
More information about the gdal-dev
mailing list