Rmagics 和 Rpy2 在 Windows 10 上损坏。所有计算结果都输出到 Windows 控制台而不是 Jupyter 输出单元。RWinOut hack 不再有效。
一旦我使用 RWinout,我就会收到一个致命错误,需要我重新启动 Jupyter NB 服务器,它会杀死 Jupyter Notebook Python 内核。
我尝试在 3 种不同的 conda 环境中安装,单独使用 conda、Anaconda Navigator 或 pip。安装所有软件包后,它总是返回相同的代码错误。有一些人提供了安装 R 的逐步手动程序,然后是 rpy2,然后是特殊的支持包,然后是 Jupyter 等。这对于普通的数据科学家和分析师来说太乏味了。
Rpy2 需要重写以支持 Windows 10。
我希望它能够工作,因为带有 Plotly-Dash 的 Python-R NB、Qgrid 等 Jupyter NB 扩展等为丰富的交互式数据科学应用程序提供了很好的组合,而无需运行像 RShiny 或其他这样的额外服务器。
我可以加载 rpy2 并使用它的函数和对象,但不能加载 R 单元魔法。
#这是我的版本信息:
R版本:('3','6.0','',76424)Rpy2版本:2.9.4 Python版本3.7.4:jupyter核心:4.5.0 jupyter-notebook:6.0.1 qtconsole:4.5.5 ipython:7.8 .0 ipykernel:5.1.2 jupyter 客户端:5.3.3 jupyter lab:1.1.4 nbconvert:5.6.0 ipywidgets:7.5.1 nbformat:4.4.0 traitlets:4.3.3 7.8.0 一切都使用Anaconda安装在这个环境中导航器或命令控制台中的 conda,除非 pip install 需要没有 conda 包的东西。
对于与 Jupyter 生态系统有关的任何事情,Conda 都是首选的包管理器,因为它被设计为与语言无关。
#R 内联魔法将输出输出到 Jupyter 输出单元,但 R 单元魔法将结果输出到我用来启动 Jupyter Notebook 的 Windows 控制台。
一旦我运行 RWinOut,就会出现下面的错误并且内核死掉了。
我还在 Windows 控制台中收到以下消息:
Loading required package: R.oo
Loading required package: R.methodsS3
R.methodsS3 v1.8.0 (2020-02-14 07:10:20 UTC) successfully loaded. See ?R.methodsS3 for help.
R.oo v1.23.0 successfully loaded. See ?R.oo for help.
Attaching package: 'R.oo'
The following object is masked from 'package:R.methodsS3':
throw
The following objects are masked from 'package:methods':
getClasses, getMethods
The following objects are masked from 'package:base':
attach, detach, load, save
R.utils v2.9.2 successfully loaded. See ?R.utils for help.
Attaching package: 'R.utils'
The following object is masked from 'package:utils':
timestamp
The following objects are masked from 'package:base':
cat, commandArgs, getOption, inherits, isOpen, nullfile, parse,
warnings
奇怪的是,内联 R 魔法可以正常工作,但不能使用 Cell 魔法。
当我按如下方式运行 RWinOut 时:
!curl -O "https://raw.githubusercontent.com/vitorcurtis/RWinOut/master/RWinOut.py"
%reload_ext RWinOut
我收到一长串错误(如下)。它还杀死了 Jupyter NB 的 Python 内核。
rpy2.ipython 扩展已经加载。要重新加载它,请使用:%reload_ext rpy2.ipython
ValueError Traceback (most recent call last)
<ipython-input-25-49c9701f263c> in <module>
----> 1 get_ipython().run_line_magic('reload_ext', 'RWinOut')
C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py in run_line_magic(self, magic_name, line, _stack_depth)
2312 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
2313 with self.builtin_trap:
-> 2314 result = fn(*args, **kwargs)
2315 return result
2316
<C:\ProgramData\Anaconda3\lib\site-packages\decorator.py:decorator-gen-67> in reload_ext(self, module_str)
C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\magic.py in <lambda>(f, *a, **k)
185 # but it's overkill for just that one bit of state.
186 def magic_deco(arg):
--> 187 call = lambda f, *a, **k: f(*a, **k)
188
189 if callable(arg):
C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\magics\extension.py in reload_ext(self, module_str)
61 if not module_str:
62 raise UsageError('Missing module name.')
---> 63 self.shell.extension_manager.reload_extension(module_str)
C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\extensions.py in reload_extension(self, module_str)
128 self.loaded.add(module_str)
129 else:
--> 130 self.load_extension(module_str)
131
132 def _call_load_ipython_extension(self, mod):
C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\extensions.py in load_extension(self, module_str)
85 dir=compress_user(self.ipython_extension_dir)))
86 mod = sys.modules[module_str]
---> 87 if self._call_load_ipython_extension(mod):
88 self.loaded.add(module_str)
89 else:
C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\extensions.py in _call_load_ipython_extension(self, mod)
132 def _call_load_ipython_extension(self, mod):
133 if hasattr(mod, 'load_ipython_extension'):
--> 134 mod.load_ipython_extension(self.shell)
135 return True
136
c:\Users\rlysakow\Desktop\00-PayEquity-WIP\RWinOut.py in load_ipython_extension(ip)
39 # loading magic and libraries
40 ip.run_line_magic('load_ext', 'rpy2.ipython')
---> 41 ip.run_line_magic('R', 'library(R.utils)')
42 ip.run_line_magic('config', 'Application.verbose_crash=True')
43
C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py in run_line_magic(self, magic_name, line, _stack_depth)
2312 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
2313 with self.builtin_trap:
-> 2314 result = fn(*args, **kwargs)
2315 return result
2316
<C:\ProgramData\Anaconda3\lib\site-packages\decorator.py:decorator-gen-133> in R(self, line, cell, local_ns)
C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\magic.py in <lambda>(f, *a, **k)
185 # but it's overkill for just that one bit of state.
186 def magic_deco(arg):
--> 187 call = lambda f, *a, **k: f(*a, **k)
188
189 if callable(arg):
C:\ProgramData\Anaconda3\lib\site-packages\rpy2\ipython\rmagic.py in R(self, line, cell, local_ns)
755 if result is not ri.NULL:
756 with localconverter(converter) as cv:
--> 757 res = cv.ri2py(result)
758 return res
759
C:\ProgramData\Anaconda3\lib\functools.py in wrapper(*args, **kw)
838 '1 positional argument')
839
--> 840 return dispatch(args[0].__class__)(*args, **kw)
841
842 funcname = getattr(func, '__name__', 'singledispatch function')
C:\ProgramData\Anaconda3\lib\site-packages\rpy2\robjects\pandas2ri.py in ri2py_vector(obj)
137 @ri2py.register(SexpVector)
138 def ri2py_vector(obj):
--> 139 res = numpy2ri.ri2py(obj)
140 return res
141
C:\ProgramData\Anaconda3\lib\functools.py in wrapper(*args, **kw)
838 '1 positional argument')
839
--> 840 return dispatch(args[0].__class__)(*args, **kw)
841
842 funcname = getattr(func, '__name__', 'singledispatch function')
C:\ProgramData\Anaconda3\lib\site-packages\rpy2\robjects\numpy2ri.py in ri2py_sexp(obj)
157 def ri2py_sexp(obj):
158 if (obj.typeof in _vectortypes) and (obj.typeof != VECSXP):
--> 159 res = numpy.asarray(obj)
160 else:
161 res = ro.default_converter.ri2py(obj)
C:\ProgramData\Anaconda3\lib\site-packages\numpy\core\numeric.py in asarray(a, dtype, order)
536
537 """
--> 538 return array(a, dtype, copy=False, order=order)
539
540
ValueError: Buffer for this type not yet supported.
我找不到任何技巧或程序来消除最后一个错误。
我现在没有时间或技能来破解 ipython 扩展以使 rpy2 工作。
有人对 rpy2 有类似的经历吗?你是如何解决问题的?