ArcGIS Python Notebook导入geemap时OpenSSL 3.0错误修复咨询
问题原因
- OpenSSL 3.0默认禁用了旧算法提供者(legacy provider),而geemap依赖的cryptography库在部分操作中需要调用这些旧算法,直接触发了加载失败的致命错误。
- 执行
os.environ["CRYPTOGRAPHY_OPENSSL_NO_LEGACY"] = "1"时出现NameError,完全是因为没提前导入os模块,Python找不到os对象导致的语法错误。
解决办法
方法1:先导入os再设置环境变量(最直接有效)
在导入geemap的代码前,按顺序执行以下代码:
import os os.environ["CRYPTOGRAPHY_OPENSSL_NO_LEGACY"] = "1" import geemap
这样既解决了NameError问题,又通过设置环境变量让cryptography跳过对legacy provider的加载要求。
方法2:更新相关依赖包
如果方法1无效,尝试把cryptography和geemap更新到最新版本,新版本大概率已经适配了OpenSSL 3.0的规则:
!pip install --upgrade cryptography geemap
(ArcGIS Notebook中执行pip命令需要添加!前缀)
方法3:调整OpenSSL系统配置(需环境权限)
如果你的环境允许修改系统配置,找到openssl.cnf配置文件(Linux通常在/etc/ssl/目录,Windows在OpenSSL安装路径下),添加或修改以下内容:
[provider_sect] default = default_sect legacy = legacy_sect [default_sect] activate = 1 [legacy_sect] activate = 1
修改后重启Notebook即可生效,但这种方式会影响整个环境的OpenSSL配置,共享环境下谨慎操作。
内容的提问来源于stack exchange,提问作者nmd17
相关产品推荐
相关产品推荐

