有什么可能的方法 pickle/serialize 通过 rpy2 导入的 R 模块? (Python)

Is there any possible way to pickle/serialize a R module imported through rpy2? (Python)

我正在开发一个依赖于通过 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

你需要R才能使用rpy2,如果你想使用R包,它们必须和R一起安装。如何打包R和包是一个相对独立于rpy2的问题,详细说明选项可能超出了SO 答案的范围:docker 图像(参见 rpy2 自己的图像 with Jupyterlab or jupyterlab and spark),预编译二进制文件、.deb 或 .rpm 包等的专用安装程序...