RKeras "unknown url type: https" 错误 six.urlretrieve(Python 来自 R 的代码)
RKeras "unknown url type: https" error six.urlretrieve (Python Code From R)
TL;DR :-) 获取 https urls 在 python 和 R 中都有效,但当 python 代码是来自 R 的 运行 时则无效。
虽然 运行在包 RKeras 的文档中使用一些代码,但我反复 运行 进入致命错误:"unknown url type: https"
问题起源于 Keras,它在 [=53] 中实现=].
我深入研究了这个问题,发现这是在 Keras 调用模块 six
中的函数 urlretrieve
以从 https url.[=22= 检索数据时发生的]
然后我测试了 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
目前,我发布了针对我的特定问题的部分解决方案。这不会解决 Reticulate 和 SSL 的一般问题,而是一个不错的临时 解决方法 来帮助任何使用 KerasR 或 Keras 并发现它无法下载的人模型和数据库
Keras/KerasR 使用缓存来避免将来下载同一对象。就我而言,它是 ~/.keras/
所以从控制台复制下载失败的URL,用浏览器下载对象并保存到keras的缓存目录。
cache for models : ~/.keras/models/
cache for datasets : ~/.keras/datasets/
(where ~ is my home directory)
当然,这是一种解决方法,我仍然期待有人发布有效的正确解决方案 system-wide。
TL;DR :-) 获取 https urls 在 python 和 R 中都有效,但当 python 代码是来自 R 的 运行 时则无效。
虽然 运行在包 RKeras 的文档中使用一些代码,但我反复 运行 进入致命错误:"unknown url type: https"
问题起源于 Keras,它在 [=53] 中实现=].
我深入研究了这个问题,发现这是在 Keras 调用模块 six
中的函数 urlretrieve
以从 https url.[=22= 检索数据时发生的]
然后我测试了 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
目前,我发布了针对我的特定问题的部分解决方案。这不会解决 Reticulate 和 SSL 的一般问题,而是一个不错的临时 解决方法 来帮助任何使用 KerasR 或 Keras 并发现它无法下载的人模型和数据库
Keras/KerasR 使用缓存来避免将来下载同一对象。就我而言,它是 ~/.keras/
所以从控制台复制下载失败的URL,用浏览器下载对象并保存到keras的缓存目录。
cache for models : ~/.keras/models/
cache for datasets : ~/.keras/datasets/
(where ~ is my home directory)
当然,这是一种解决方法,我仍然期待有人发布有效的正确解决方案 system-wide。