Rmagics и Rpy2 разбиты на Windows 10. Все результаты вычислений go до Windows Консоль, а не выходные ячейки Jupyter. RWinOut взломать больше не работает - PullRequest
1 голос
/ 14 марта 2020

Rmagics и Rpy2 не работают Windows 10. Все результаты вычислений go до Windows Консоль, а не выходные ячейки Jupyter. Взлом RWinOut больше не работает.

Как только я использую RWinout, я получаю фатальную ошибку, которая требует от меня перезапустить сервер Jupyter NB, он убивает ядро ​​Jupyter Notebook Python.

Я попытался установить в 3 различных средах conda, используя только conda, Anaconda Navigator или pip. Он всегда возвращается к той же ошибке кода после установки всех пакетов. Есть несколько человек, предлагающих пошаговые инструкции по установке R, затем rpy2, затем специальные пакеты поддержки, затем Jupyter, et c. Это слишком утомительно для обычных исследователей данных и аналитиков.

Rpy2 необходимо переписать для поддержки Windows 10.

Я хочу, чтобы это работало, потому что Python -R NB с Plotly-Da sh, расширения Jupyter NB, такие как Qgrid и другие создают хорошие комбинации для интерактивных приложений для обработки данных без необходимости запуска дополнительных серверов, таких как 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 i python: 7.8.0 ipykernel: 5.1.2 jupyter client: 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 Navigator или conda из командной консоли, если только установка pip не требовалась для чего-то, у кого не было пакета conda.

Конда является наиболее предпочтительным пакетом м жаждут чего-либо связанного с экосистемой Jupyter, потому что она спроектирована так, чтобы быть зависимой от языка c.

#

Встроенные магические R-сигналы производят выход в выходную ячейку Jupyter, но магические R-клетки выводят результаты на консоль Windows, которую я использовал для запуска ноутбука Jupyter.

Как только я запускаю 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

Странно то, что магия inline R работает нормально, но НЕ магию Cell.

Когда я запускаю RWinOut следующим образом:

!curl -O "https://raw.githubusercontent.com/vitorcurtis/RWinOut/master/RWinOut.py"

%reload_ext RWinOut

Я получаю длинную строку ошибок (ниже). Это также убивает ядро ​​Python для Jupyter NB.

Расширение rpy2.i python уже загружено. Чтобы перезагрузить его, используйте:% reload_ext rpy2.i python


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.

Я не смог найти никаких хаков или процедур для устранения этой последней ошибки.

У меня сейчас нет времени или навыков взломать расширения i python, чтобы заставить работать rpy2.

У кого-нибудь был подобный опыт с rpy2? Как вы решили проблемы?

...