简体   繁体   English

有没有办法对通过rpy2导入的R模块进行腌制/序列化? (蟒蛇)

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

I am working on a package with a dependency on a particular program installed via R . 我正在研究一个依赖于通过R安装的特定程序的程序包。 I would rather simplify the installation process and not make the users create a backend for R with all of the packages. 我宁愿简化安装过程,也不要让用户使用所有软件包为R创建后端。 This may be completely unavoidable but I'm wondering if there is any possible way to supply the R objects in a serialized form via pickle or any serialization module in Python? 这可能是完全不可避免的,但我想知道是否有任何可能的方法可以通过pickle或Python中的任何序列化模块以序列化形式提供R对象?

I tried pickle first and then tried dill but had no luck. 我先尝试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答案范围的选项:泊坞窗图像(见rpy2自己的图像与Jupyterlabjupyterlab和火花 ),专用安装程序预编译的二进制,或者deb文件包的.rpm,等...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM