【问题标题】:RKeras "unknown url type: https" error six.urlretrieve (Python Code From R)RKeras“未知的url类型:https”错误六.urlretrieve(来自R的Python代码)
【发布时间】:2018-04-08 15:14:20
【问题描述】:

TL;DR :-) 获取 https url 在 python 和 R 中都有效,但在从 R 运行 python 代码时则无效。


在 RKeras 包的文档中运行一些代码时,我反复遇到致命错误:"unknown url type: https" 问题源于用 Python 实现的 Keras。

我深入研究了这个问题,发现这是在 Keras 调用模块 six 中的函数 urlretrieve 以从 https url 检索数据时发生的。

然后我在 iPython 中测试了代码,发现它运行良好。

<!-- language: lang-python -->
from six.moves.urllib.request import urlretrieve
urlretrieve(url="https://www.google.com")

然后我尝试在 R 中做同样的事情,但它失败了

<!-- language: lang-r -->
library(reticulate)
py_run_string('from six.moves.urllib.request import urlretrieve')
py_run_string("urlretrieve(url='https://www.google.com')")

然而,同样的事情在 R 中也适用于普通的 http

<!-- language:lang-r -->
py_run_string("urlretrieve(url='http://www.google.com')")

为了记录,https 在我的 R 中使用 httr 之类的包可以正常工作。

我在这里完全超出了我的深度。会发生什么?

这是关于我的环境的一些输出

R:

sessionInfo()
# R version 3.4.4 (2018-03-15)
# Platform: x86_64-pc-linux-gnu (64-bit)
# Running under: Ubuntu 16.04.4 LTS
# other attached packages:
# [1] reticulate_1.6 kerasR_0.8.0  

和 Python(从 R 看)

py_config()

version:        3.5.2 |Anaconda custom (64-bit)| 
(default, Jul  2 2016, 17:53:06)  [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]

非常感谢您的时间和精力。


编辑:R 中的更多调试信息:

py_run_string("from OpenSSL import SSL")
# ImportError: /xxx/python3.5/lib-dynload/_ssl.so: undefined symbol: SSLv2_method

【问题讨论】:

    标签: python r https six reticulate


    【解决方案1】:

    目前,我正在发布针对我的特定问题的部分解决方案。这不会解决 Reticulate 和 SSL 的一般问题,但它是一个不错的临时解决方法,可以帮助任何使用 KerasR 或 Keras 并发现它无法下载模型和数据库的人强>

    Keras / KerasR 使用缓存来避免将来下载相同的对象。就我而言,它是~/.keras/

    所以从控制台复制下载失败的URL,用浏览器下载对象并保存到keras的缓存目录。

    cache for models : ~/.keras/models/
    cache for datasets : ~/.keras/datasets/
    (where ~ is my home directory)
    

    当然,这是一种解决方法,我仍然期待有人发布适用于系统范围的适当解决方案。

    【讨论】:

    • 嗨 R.S.,感谢这个解决方法 - 我遇到了类似的问题,很高兴知道可以手动下载 Keras 模型。您有没有找到永久解决问题的方法?
    • @RoyalSwish 没有。实际上我还没有深入研究它,因为我忙于其他事情。如果我发现了什么,我会在这里发布,或者会欢迎其他人的建议。
    猜你喜欢
    • 2015-01-22
    • 2019-07-22
    • 2015-04-07
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多