Ubuntu 22.04升级后Azure ML创建Tabular Dataset时出现SSL连接失败错误求助
你遇到的这个SSL连接问题,确实和Ubuntu 22.04的环境配置密切相关——尤其是系统SSL库与Azure ML SDK的兼容性冲突。以下是几个经过验证的解决方案,你可以逐一尝试:
1. 升级Azure ML SDK到最新兼容版本
旧版本的Azure ML SDK可能没适配Ubuntu 22.04的SSL环境(比如系统底层依赖的OpenSSL版本变化)。执行以下命令升级核心SDK组件:
pip install --upgrade azureml-core azureml-dataset-runtime azureml-defaults
升级完成后,重启Python环境再尝试创建Tabular Dataset。
2. 强制指定系统CA证书路径
Ubuntu 22.04的CA证书路径可能和SDK默认查找路径不一致,导致SSL证书验证失败。在运行Python代码前,先设置环境变量指定系统CA证书:
export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt export AZUREML_SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
如果是在Jupyter Notebook中,可以在代码开头添加:
import os os.environ['SSL_CERT_FILE'] = '/etc/ssl/certs/ca-certificates.crt' os.environ['AZUREML_SSL_CERT_FILE'] = '/etc/ssl/certs/ca-certificates.crt'
3. 检查Python绑定的OpenSSL版本
Ubuntu 22.04默认搭载OpenSSL 3.0,但如果你的Python环境绑定的是1.1.1,可能出现兼容性问题。先查看当前Python使用的SSL版本:
import ssl print(ssl.OPENSSL_VERSION)
如果输出是OpenSSL 1.1.1,建议切换到系统默认的Python环境(或重新创建基于Ubuntu 22.04的虚拟环境),让Python使用系统的OpenSSL 3.0;也可以尝试更新Python的SSL绑定库:
pip install pyopenssl --upgrade
4. 调整Dataset创建的路径写法
有时候SDK对Datastore路径的解析在特定环境下会出问题,试试换一种路径指定方式:
from azureml.core import Dataset # 方式1:直接使用Datastore的path方法 data1 = Dataset.Tabular.from_delimited_files(path=ds.path('dataset1.csv')) # 方式2:获取文件的完整路径列表 file_paths = ds.get_paths('dataset1.csv') data1 = Dataset.Tabular.from_delimited_files(path=file_paths)
5. 排查代理或防火墙干扰
如果你的机器处于代理或防火墙环境下,可能会拦截SSL连接。确保代理配置正确,并且允许访问https://westeurope.experiments.azureml.net域名。可以临时关闭代理测试,或设置对应的环境变量:
export HTTP_PROXY=http://your-proxy:port export HTTPS_PROXY=http://your-proxy:port
优先尝试升级SDK和指定CA证书路径,这两个是解决这类SSL问题最常见的有效方法。
内容的提问来源于stack exchange,提问作者elka

