我正在开发一个依赖于通过R
安装的特定程序的软件包。我宁愿简化安装过程,而不是让用户用所有的包为R
创建一个后端。这可能是完全不可避免的,但我想知道是否有任何可能的方法来通过pickle
或Python中的任何序列化模块以序列化的形式提供R对象?
我先尝试了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
发布于 2018-08-28 20:50:44
你需要R来使用rpy2,如果你想使用R包,它们必须与R一起安装。如何打包R和包是一个相对独立于docker的问题,详细介绍这些选项可能超出了SO答案的范围:docker镜像(参见rpy2自己的镜像with Jupyterlab或jupyterlab and spark),预编译二进制文件的专用安装程序,.deb或.rpm包,等等……
https://stackoverflow.com/questions/52044403
复制