Есть ли какой-нибудь возможный способ выбрать / сериализовать модуль R, импортированный через rpy2? (Python) - PullRequest
0 голосов
/ 27 августа 2018

Я работаю над пакетом с зависимостью от конкретной программы, установленной через R. Я бы скорее упростил процесс установки и не заставлял пользователей создавать бэкэнд для R со всеми пакетами. Это может быть совершенно неизбежно, но мне интересно, есть ли какой-нибудь возможный способ предоставить объекты R в сериализованной форме через pickle или какой-либо модуль сериализации в Python?

Сначала я попробовал pickle, а затем dill, но безуспешно.

>>> import pickle
>>> from rpy2.robjects.packages import importr
>>> r_package = importr("dynamicTreeCut")
>>> r_package
rpy2.robjects.packages.Package as a <module 'dynamicTreeCut'>
>>> with open("./dynamicTreeCut.rpy2.pkl", "wb") as f:
...     pickle.dump(r_package, f)
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
TypeError: can't pickle InstalledSTPackage objects

1 Ответ

0 голосов
/ 28 августа 2018

Вам нужен R для использования rpy2, и если вы хотите использовать пакеты R, они должны быть установлены вместе с R. Как упаковать R и пакеты - это вопрос, который относительно независим от rpy2, и детализация параметров, вероятно, выходит за рамки Ответ SO: образ docker (см. собственные изображения rpy2 с Jupyterlab или jupyterlab и spark ), специальный установщик для предварительно скомпилированных двоичных файлов, пакетов .deb или .rpm и т. д. *

...