You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RKeras调用Python代码时出现unknown url type: https错误求助

我之前处理过几乎一模一样的问题,给你分享下可行的解决步骤:

解决R调用Python代码(RKeras)时出现"unknown url type: https"的问题

问题梳理

你遇到的场景很典型:

  • 单独在Python环境下请求HTTPS URL完全正常
  • 单独在R环境下请求HTTPS URL也没问题
  • 但通过R运行Python代码(比如RKeras官方文档的示例)时,反复触发致命错误:

    "unknown url type: https"

经过排查,这个错误的根源在于Keras底层调用了six模块的urlretrieve()函数获取HTTPS资源,而R调用Python时的环境配置和纯Python环境存在差异,导致HTTPS支持失效。

具体解决方案

1. 确认Python环境的SSL有效性

先排除Python本身的问题,虽然单独运行正常,但R调用时可能加载了不同的环境:
打开纯Python终端,运行以下代码验证:

from six.moves.urllib.request import urlretrieve
urlretrieve("https://example.com")

如果能正常执行,说明Python本身的SSL支持没问题,问题出在R调用Python时的环境配置。

2. 强制R加载正确的Python环境

R可能默认调用了系统自带的Python(这类版本往往缺少完整的SSL支持),需要手动指定你验证过的Python环境:
在R中执行以下代码:

# 替换为你实际使用的Python路径,比如~/anaconda3/bin/python或C:\Python39\python.exe
Sys.setenv(RETICULATE_PYTHON = "/path/to/your/python")
library(reticulate)
py_config() # 查看输出,确认加载的是你指定的Python环境

3. 替换Keras中的urlretrieve实现

如果环境配置调整无效,可以直接修改Keras的代码,绕开six模块的urlretrieve,改用更可靠的requests库:
找到Keras中调用urlretrieve的文件(通常是keras/utils/data_utils.py),将类似这样的代码:

from six.moves.urllib.request import urlretrieve
urlretrieve(url, filename)

替换为:

import requests
with open(filename, 'wb') as f:
    f.write(requests.get(url).content)

这样直接用requests处理HTTPS请求,兼容性会好很多。

4. 更新reticulate包

旧版本的reticulate可能存在Python环境加载的bug,确保你用的是最新版本:

install.packages("reticulate")
library(reticulate)
packageVersion("reticulate")

验证修改

调整完成后,重新运行RKeras的示例代码测试,比如:

library(keras)
mnist <- dataset_mnist()

如果能正常下载MNIST数据集,说明问题已经解决。

内容的提问来源于stack exchange,提问作者R.S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:57:48