安装Basemap构建GEOS库时CMake提示需管理员权限如何解决
macOS Monterey下Basemap构建GEOS库权限报错解决方案
问题复现场景
运行环境:
- 操作系统:macOS Monterey
- Python版本:3.9
- 前置状态:已完成Basemap安装所需的全部前置依赖部署,执行官方指引第三步「构建GEOS库」操作
执行的命令如下:
export GEOS_DIR=<your desired location> python -c "import utils; utils.GeosLibrary('3.5.1').build(installdir='${GEOS_DIR}')"
触发报错信息:
CMake Error at include/cmake_install.cmake:41 (file): file cannot create directory: /usr/include/geos. Maybe need administrative privileges. Call Stack (most recent call first): cmake_install.cmake:42 (include)
手动执行sudo make install后重跑流程问题依旧存在。
故障根因
- macOS Monterey默认开启系统完整性保护(SIP),即便使用sudo权限,也无法向系统级路径
/usr/include写入文件,这是手动执行make install无效的核心原因。 - 命令执行时
GEOS_DIR变量未正确传递给构建脚本:要么设置路径时保留了尖括号占位符、要么引号使用错误导致变量未被解析,脚本 fallback 到默认的系统安装路径/usr/,最终触发权限报错。
修复步骤
- 第一步:将GEOS安装路径设置为当前用户拥有完整读写权限的非系统路径,不要使用
/usr下的系统目录,推荐设置到用户家目录下的本地软件路径:
export GEOS_DIR=$HOME/local/geos
注意:命令中不要保留尖括号占位符,直接写入实际路径即可,$HOME对应当前登录用户的家目录,该路径下的所有操作无需管理员权限
- 第二步:提前创建目标路径,避免路径不存在引发的构建异常:
mkdir -p $GEOS_DIR
- 第三步:(可选)强制指定CMAKE安装前缀,避免脚本默认读取系统路径配置:
export CMAKE_INSTALL_PREFIX=$GEOS_DIR
- 第四步:重新执行GEOS构建命令,注意引号使用规则,确保
GEOS_DIR变量能被正确解析传入:
python -c "import utils; utils.GeosLibrary('3.5.1').build(installdir='${GEOS_DIR}')"
注意事项
不建议通过关闭系统完整性保护(SIP)的方式往
/usr/include写入文件,会大幅降低系统安全性。本地用户目录安装的GEOS库完全可以满足Basemap的运行依赖要求,后续编译安装Basemap时只要保持GEOS_DIR环境变量为上述设置的路径,构建脚本即可自动识别到已安装的GEOS库。
内容的提问来源于stack exchange,提问作者Maria Cristina Alvarez
相关产品推荐
相关产品推荐

