【问题标题】:In Shiny, Python Virtual environment PERMISSION DENIED (Error 126)在 Shiny 中,Python 虚拟环境 PERMISSION DENIED(错误 126)
【发布时间】:2023-11-15 09:13:01
【问题描述】:

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

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

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

use_virtualenv("env", required = TRUE)

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

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

问题是“错误126”,它拒绝了我们的APP访问虚拟环境的权限。这个问题在 * 上没有以前的(类似)案例,因此我们花了很长时间调试(问题未解决)。

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

非常感谢!

【问题讨论】:

    标签: python r shiny permission-denied reticulate


    【解决方案1】:

    您能否分享实际调用 python 脚本的代码?它是您从 Rshiny 调用的 python 模块函数吗? python模块/函数做什么并返回?我在 Shiny 中使用了 reticulate 来调用 Python 脚本,它工作正常。不需要设置环境。只需提供 python 脚本的源代码并像调用任何其他 R 函数一样调用它。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】: