在python模块中打包支持R代码?

Rya*_*son 13 python packaging r

我正在尝试打包一些使用rpy2调用R代码的Python代码.那个R代码当前位于一个单独的文件中,我source来自Python脚本.例如,如果python脚本是myscript.py,那么R代码存储在myscript_support.R,我有类似以下内容myscript.py:

from rpy2.robjects import *

# Load the R code
r.source(os.path.join(os.path.dirname(__file__), "myscript_support.R"))

# Call the R function
r[["myscript_R_function"]]()
Run Code Online (Sandbox Code Playgroud)

我现在想用setuptools打包这个Python脚本,我有几个问题:

  1. 我应该如何打包R支持代码,一旦完成,我如何找到R文件的路径以便我可以获取它?

  2. R代码取决于几个R包.如何确保安装这些?如果无法加载这些R包,我是否应该提出信息错误?

jsi*_*ell 5

这个问题可能已经过时了,但我今天遇到了同样的问题,并且想为 @ivan_pozdeev 建议的问题 1 解决方案提供更多详细信息,并为问题 2 提供新的解决方案。

1) 将 setup.py 文件编辑为:

from setuptools import setup, find_packages

setup(
    ...
    # If any package contains *.r files, include them:
    package_data={'': ['*.r', '*.R']},
    include_package_data=True)
    )
Run Code Online (Sandbox Code Playgroud)

2)Conda 正在迅速成为处理 python 和 R 之间的包依赖关系的好选择。您可以创建一个环境(http://conda.pydata.org/docs/using/envs),下载所有 r 和 python 包您可能需要,然后生成一个environment.yml 文件,以便任何人都可以复制您的环境。查看此博客了解更多信息:https ://www.continuum.io/content/conda-data-science


ubi*_*bik 0

我应该如何打包 R 支持代码,完成此操作后,如何找到 R 文件的路径以便获取它?

对于要安装的源文件,您需要在package_data. 您可以像现在一样找到他们的路径。

R 代码依赖于多个 R 包。我如何确保这些已安装?如果无法加载这些 R 包,我是否应该提出一个信息性错误?

要么setup.py检查它们是否存在(类似于“configtools 方法”),要么在无法加载它们时引发某种异常。或者也许两者都做,然后如果由于某种原因您依赖的文件消失了,至少您会知道。