【问题标题】:Custom R package on OpenCPU / Package found, but no functions visibleOpenCPU 上的自定义 R 包 / 包找到,但没有可见的功能
【发布时间】:2014-08-13 09:30:14
【问题描述】:

CI 为 OpenCPU 编写了一个 R 包,想在我自己的云服务器上使用它。即使包本身被识别并且可以更新,我也无法访问任何功能,并且我可以通过 POST 和 GET 通常访问其他(非自定义,例如基本或统计)包。

我已将自定义包连同所有依赖项一起安装到 /usr/local/lib/R/site-library,我可以在服务器本地使用 R 会话中的函数。

> TestConnectivity
function (x = 100) 
{
    return(sum(rnorm(x)))
}
<environment: namespace:MyPkg>
> TestConnectivity()
[1] 4.174071

函数导出正确(使用roxygen2的文档):

> getNamespaceExports("MyPkg")
[1] "TestConnectivity"

但是当我通过 OpenCPU(通过浏览器或 curl)在 /ocpu/library/MyPkg/R/TestConnectivity 访问它时,我得到:

object 'TestConnectivity' not found

In call:
get(reqobject, paste("package", reqpackage, sep = ":"), inherits = FALSE)

/ocpu/library/MyPkg/R/ 也是空白的(通常需要导出函数的列表),但包本身可以通过浏览器在/ocpu/library/MyPkg/ 看到:

    Information on package 'MyPkg'

Description:

Package:       MyPkg
Description:   in development ...
Type:          Package
Version:       0.1.2
[...]

Index:

TestConnectivity        Test Connectivity of OpenCPU
MyPkg                   Provide R analysis of stored data.
MyPkg-package           Calculation package

我已将其名称添加到/etc/opencpu/server.conf 的预加载字段中,但/ocpu/info 仅显示为loaded via a namespace (and not attached): [n] MyPkg_0.1.2。不知道有没有问题。

我还向/etc/apparmor.d/opencpu.d/custom 添加了对软件包功能所需的所有文件的访问权限,例如用于 ODBC 数据库连接的 DSN 配置文件。

包本身不仅包含函数,还包含组装的R6S3 类定义(单个文件中的继承)——尽管如此,它们都没有在TestConnectivity() 中使用。函数也不总是放置在与函数同名的文件中 - 有时多个文件组合在一个文件中。 (TestConnectivity() 放置在相应的 TestConnectivity.R 文件中 - 如果重要的话。)

相对于在本地使用包,在使用 OpenCPU 时文件结构是否存在一些限制,这可能会导致此问题?或者类定义文件可能是造成问题的原因?任何建议表示赞赏。

【问题讨论】:

  • 你似乎做对了。 OpenCPU 中的 R 包没有额外的限制。您的代码是否在某处公开可用?还是显示问题的简单版本的软件包?如果您提供一个我们可以测试的示例,会更容易为您提供帮助。

标签: r package cloud opencpu


【解决方案1】:

感谢您的回答(以及关于 OpenCPU 的出色工作,顺便说一句...)!

我通过简单地在/home/myUser/R/3.1/library 中安装包解决了我的问题,例如.libPaths()[1](或R-LIBS-USER[1])而不是/usr/local/lib/R/site-library

我是通过逐步构建一个越来越复杂的测试包来实现的……在我几乎拥有我的实际项目结构的时候,它仍然有效。唯一不同的是安装路径。

总而言之,这可能是我的虚拟机上的权限管理问题,而不是 OpenCPU 或我的包的问题。很抱歉,我无法提供更多信息 - 如果我偶然发现了什么,我会在此处添加。

编辑 - 我忘了:当然,网址从/ocpu/library/MyPkg/R/ 更改为/ocpu/user/MyUsername/library/MyPkg/R/

【讨论】:

    猜你喜欢
    • 2015-08-23
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 2020-08-07
    相关资源
    最近更新 更多