最近发现在Windows环境下安装gdal,rasterio等都会出现头文件缺失的问题,比如:
pip install gdal -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install rasterio -i https://pypi.tuna.tsinghua.edu.cn/simple
安装会下载tar.gz格式的gdal包,回报一些类似找不到头文件的错误,比如:
fatal error C1083: 无法打开包括文件: “cpl_conv.h”: No such file or directory
fatal error C1083: 无法打开包括文件: “gdal.h”: No such file or directory
ERROR: A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
对于此问题,通过以下方式解决:
1.去此网站https://www.gisinternals.com/archive.php,下载对应版本的gdal库,以gdal-3.6.2为例,主要下载两个包:
#lib库和头文件:release-1916-x64-gdal-3-6-2-mapserver-8-0-0-libs.zip
#dll和exe文件:release-1916-x64-gdal-3-6-2-mapserver-8-0-0.zip
2.下载下来后,解压libs文件后,分别将include和lib中的文件放到python的include和libs目录下,比如:
#将include下的文件全部拷贝到:D:\Programs\Anaconda3\envs\Py38\include目录下
#将lib下的文件拷贝到D:\Programs\Anaconda3\envs\Py38\libs目录下
或者(推荐)
#将include和lib中的文件分别放到D:\Programs\Anaconda3\envs\Py38\Library目录下的include,lib目录下
#将release-1916-x64-gdal-3-6-2-mapserver-8-0-0.zip解压,将bin中的所有文件,包括dll和exe等都放到D:\Programs\Anaconda3\envs\Py38\Library\bin目录下
3.然后设置环境变量
set GDAL_DATA=D:\Programs\Anaconda3\envs\Py38\Library\lib\gdal-data
#实验中安装了gdal-3.6.2-1916-x64-core.msi,这个安装包把gdal-3.6.2的可执行文件安装到C:\Program files\GDAL目录下,因此添加了环境变量
set PATH=%PATH%;"C:\Program files\GDAL"
set GDAL_DATA="C:\Program files\GDAL\gdal-data"
4.之后执行安装
pip install gdal==3.6.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
#如果提示缺少gdal.lib,去lib目录下,把gdal_i.lib复制一下,改名为gdal.lib即可。
以上是安装高版本gdal的方法,如果是在conda环境下,可以直接用conda安装
conda install gdal
对于安装好的环境,可以反向构造whl包
pip wheel --wheel-dir=./whl gdal==3.6.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
生成成功后,会提示相应的whl文件存储到了某个目录下,此时去该目录下把whl拷贝到其它离线机器上就可以直接安装了
pip install GDAL-3.6.2-cp38-cp38-win_amd64.whl