gpt4 book ai didi

python - 使用 conda 安装 gdal 并设置环境变量

转载 作者:太空宇宙 更新时间:2023-11-03 11:19:25 28 4
gpt4 key购买 nike

我一直在尝试让 gdal 库在 Windows 8 环境中使用 Python 2.7 和 Anaconda。

除了gdal,我还安装了libgdal(说实话,我不太明白两者的区别)。我现在似乎有 gdal 2.1.0 和 2.0.2 以及 libgdal 2.1.0。

但是,当我运行 Py 代码时,出现 gdal 错误:

'gdalwarp' is not recognized as an internal or external command, operable program or batch file.

我已经设置了GDAL_DATA环境变量指向

C:\Anaconda\pkgs\libgdal-2.1.0-vc9_0\Library\share\gdal

我还添加了一个路径,虽然我不完全确定它应该指向哪里:

C:\Anaconda\pkgs\libgdal-2.1.0-vc9_0\Library\bin

我对 gdal 2.0.2 进行了同样的尝试,但没有成功。 gdalwarp.exe 似乎确实存在于 libgdal 2.1.0 和 gdal 2.0.2 下。

有什么想法吗?是安装有问题还是我没有正确设置环境变量?

仅供引用,我尝试了各种安装命令,特别是:

conda install gdal
conda install -c conda-forge gdal
conda install -c anaconda gdal

附录:我找到了一个手动解决方案:在运行代码之前,我在终端中设置了 GDAL_DATA 和 PATH 变量(指向 libgdal 2.1.0)...

但是,当我运行我的 Py 代码时仍然存在一个问题:它应该使用 gdal_polygonize 将 tiff 文件转换为 shp:

cmd = 'gdal_polygonize.py %s -f "ESRI Shapefile" %s'%(dst_tif, dst_shp)

没有错误,但没有创建 shapefile(这会导致稍后在代码中出错)。关于为什么 gdal 仍然无法正常工作的任何想法?

我尝试将环境变量指向 osgeo:

set PATH=%PATH%;C:\Anaconda2\Lib\site-packages\osgeo\scripts
set GDAL_DATA=C:\Anaconda2\Lib\site-packages\osgeo\data\gdal

Gdalinfo 有效,但我的 Py 代码中使用的 gdal_polygonize 似乎无效。

最佳答案

关键是在激活环境时(可能)执行的激活脚本。并非 Conda 的每个 GDAL 构建都包含此内容。根据我的经验,最近的 Conda-Forge 构建非常好。

根据您对 py27 和 GDAL 2.1 的要求,我可以按照以下步骤让它工作:

1) 创建新环境:conda create -n gdaltest python=2.7

2) 激活:activate gdaltest

3) 安装 GDAL:conda install gdal=2.1 -c conda-forge

4) 重新激活环境:deactivate + activate gdaltest这会强制执行刚刚安装的激活脚本,这会设置环境变量。

如果我启动 python 并运行 os.system("gdalinfo") ,我可以看到它被正确拾取。并运行 os.environ['GDAL_DATA']确认路径设置正确。

您可以在以下位置自行查看(取消)激活脚本: C:\Miniconda3\envs\<env name>\etc\conda\activate.d\gdal-activate.bat

几年前,这不像今天那样有效,因此请确保您有最新的 Conda 版本 (4.3.x) 等。

这种方法的好处是,当切换环境时,你的路径也会相应地改变。 “硬编码”GDAL_DATA如果您混合和匹配不同的 GDAL 版本(尽管通常应该可以正常工作),path 可能会导致一些兼容性问题。

关于python - 使用 conda 安装 gdal 并设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45983501/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com