在Shiny,Python虚拟环境PERMISSION DENIED(错误126)

时间:2018-06-02 02:15:55

标签: python r shiny permission-denied reticulate

我们正在通过R Shiny构建用户界面APP(通过机器学习模型预测连续变量)。 由于我们在Python3 sklearn模块中构建了机器学习模型,我们希望我们可以在R Shiny中编写python代码来调用该模型和相应的函数。

我们使用R-package“reticulate”创建虚拟python环境,它将保存python包,并通过它我们可以调用python3函数。

我们使用以下代码行创建了虚拟环境(R包中的函数“网状”)

use_virtualenv("env", required = TRUE)

我们确实有以下目录“env / bin”,其中有python和python3要执行。

Shiny APP在当地完美运作。但是,当我们尝试发布时,它给了the following error (please see picture)(在APP成功部署之后,在shinyapps.io上,它说APP正在运行)。

问题是“错误126”,它拒绝我们的APP访问虚拟环境的权限。此问题在Stackoverflow上没有先前(类似)的情况,因此我们花了很长时间进行调试(问题未解决)。

如果有人知道如何解决这个问题,您是否有可能在下面标记您的解决方案提示? (我们希望您的解决方案不会修改我们的基本布局,即“在Shiny中调用python-made模型并通过Shiny发布”)我们非常感谢您帮助我们的努力!

非常感谢你!

2 个答案:

答案 0 :(得分:0)

您可以共享实际调用python脚本的代码吗?您是从Rshiny调用的python模块函数吗? python模块/函数做什么并返回?我已经使用网状内部闪亮调用Python脚本,它工作正常。不需要设置环境。只需提供python脚本的源代码,然后像其他R函数一样调用它即可。

答案 1 :(得分:0)

如果您尝试部署到Shinyapps.io,则可能需要设置RETICULATE_PYTHON env变量,以便reticulate在运行应用程序时使用正确的Python版本:

VIRTUALENV_NAME = 'env'
Sys.setenv(RETICULATE_PYTHON = paste0('/home/shiny/.virtualenvs/', 
                               VIRTUALENV_NAME, 
                               '/bin/python'))

Full example here演示了一种配置Shiny +网状应用程序的方法,以便它可以轻松地在本地和Shinyapps.io上运行。