Windows10+Python3.6.4环境下pip安装GDAL遇C1083错误求助
解决Windows Anaconda环境下pip安装GDAL出现
cpl_port.h找不到的问题 嘿,这个坑我太熟了!直接用pip install gdal在Windows下编译GDAL几乎都会遇到这类头文件缺失的问题,尤其是你用Anaconda环境的话,其实有更省心的解决方案,不用死磕源码编译。
先给你理清楚问题根源:你看到的核心错误是
extensions/gdal_wrap.cpp(3168): fatal error C1083: 无法打开包含文件: 'cpl_port.h': 没有此文件或目录 命令'C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.13.26128\bin\HostX86\x64\cl.exe'执行失败,退出状态为2
这是因为pip默认会拉取GDAL的源码包来编译,但GDAL的编译需要它自己的核心开发头文件和依赖库,Windows系统里默认没有这些东西——你之前装VS2017构建工具只是解决了C++编译环境的问题,但还缺GDAL专属的开发文件,所以编译器找不到cpl_port.h,编译直接失败。
下面给你按推荐程度排序的解决方案:
方法一:用Anaconda直接安装(最推荐,一步到位)
既然你用的是Anaconda发行版,直接用conda安装GDAL会自动处理所有依赖,完全不用管编译的事儿:
- 打开Anaconda Prompt(或者你用来激活虚拟环境的命令行)
- 先激活你的
ecoscan虚拟环境:conda activate ecoscan - 执行conda安装命令,用conda-forge频道的包(这个频道的GDAL包更新及时,依赖处理更靠谱):
等安装完成后,直接在Python里conda install -c conda-forge gdalimport gdal就能用了。
方法二:用预编译的Wheel文件安装
如果不想用conda,也可以下载对应你Python版本和系统架构的预编译GDAL wheel文件,跳过编译步骤:
- 确认你的Python是3.6版本,系统是x64,所以要找后缀带
cp36、win_amd64的GDAL wheel文件(比如GDAL 2.2.4对应的GDAL-2.2.4-cp36-cp36m-win_amd64.whl) - 下载好之后,在命令行切换到下载目录,执行:
这样pip会直接安装编译好的二进制包,不会触发源码编译。pip install 你的wheel文件名.whl
方法三:手动配置编译环境(不推荐,步骤繁琐)
如果你非要从源码编译GDAL,那得手动给编译器指定GDAL的开发文件位置:
- 下载对应版本的GDAL二进制开发包(包含头文件和库文件),解压到一个固定路径,比如
C:\GDAL - 设置两个环境变量:
GDAL_INCLUDE:指向解压后的include目录(比如C:\GDAL\include)GDAL_LIBRARY:指向解压后lib目录里的gdal_i.lib文件(比如C:\GDAL\lib\gdal_i.lib)
- 环境变量设置好之后,再重新运行
pip install gdal,此时编译器就能找到cpl_port.h这类头文件了。
总结一下,优先用方法一,Anaconda的包管理会帮你省掉超多麻烦,不用自己折腾依赖和编译配置。
内容的提问来源于stack exchange,提问作者ccsv




