You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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会自动处理所有依赖,完全不用管编译的事儿:

  1. 打开Anaconda Prompt(或者你用来激活虚拟环境的命令行)
  2. 先激活你的ecoscan虚拟环境:
    conda activate ecoscan
    
  3. 执行conda安装命令,用conda-forge频道的包(这个频道的GDAL包更新及时,依赖处理更靠谱):
    conda install -c conda-forge gdal
    
    等安装完成后,直接在Python里import gdal就能用了。

方法二:用预编译的Wheel文件安装

如果不想用conda,也可以下载对应你Python版本和系统架构的预编译GDAL wheel文件,跳过编译步骤:

  1. 确认你的Python是3.6版本,系统是x64,所以要找后缀带cp36win_amd64的GDAL wheel文件(比如GDAL 2.2.4对应的GDAL-2.2.4-cp36-cp36m-win_amd64.whl
  2. 下载好之后,在命令行切换到下载目录,执行:
    pip install 你的wheel文件名.whl
    
    这样pip会直接安装编译好的二进制包,不会触发源码编译。

方法三:手动配置编译环境(不推荐,步骤繁琐)

如果你非要从源码编译GDAL,那得手动给编译器指定GDAL的开发文件位置:

  1. 下载对应版本的GDAL二进制开发包(包含头文件和库文件),解压到一个固定路径,比如C:\GDAL
  2. 设置两个环境变量:
    • GDAL_INCLUDE:指向解压后的include目录(比如C:\GDAL\include
    • GDAL_LIBRARY:指向解压后lib目录里的gdal_i.lib文件(比如C:\GDAL\lib\gdal_i.lib
  3. 环境变量设置好之后,再重新运行pip install gdal,此时编译器就能找到cpl_port.h这类头文件了。

总结一下,优先用方法一,Anaconda的包管理会帮你省掉超多麻烦,不用自己折腾依赖和编译配置。

内容的提问来源于stack exchange,提问作者ccsv

火山引擎 最新活动