在R包开发中处理python模块

2024-04-27 19:54:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个R包,其中包含来自不同python模块的功能。 网状包提供了各种函数来从R中加载和执行python模块

对于我的包的部署,我想知道在安装我的R包时,处理python模块安装的最有效方法是什么

因为我的python模块需要python>;=3.7,我计划在R包中包含一个带有python 3.7的虚拟环境。安装后,应下载必要的python模块并将其导入虚拟环境

我无法在已包含必要模块的环境中部署我的R包,因为此类环境的文件大小将超过>;1.5 GB。这看起来有点大

有什么方便的方法处理这个问题吗

我在想这样的事情:

module <- NULL

.onload <- function(libname, pkgname){
   reticulate::use_virtuaenv("./path/to/my/environment/contained/in/the/package")

   if (!reticulate::py_module_available(python_module)){
      reticulate::py_install("module_name")
   }
   module <<- reticulate::import("module_name")
}

在网状包(https://rstudio.github.io/reticulate/articles/package.html)的文档中,他们建议提供包装函数,以便用户可以定义要使用的虚拟环境/python,并且用户可以手动下载必要的模块。但这对我来说似乎有点不方便,因为在我看来,一旦安装了R包,这些模块就应该自动安装

我的方法有意义吗?还是这只是一种不礼貌的礼节


Tags: 模块方法函数用户namepygt功能