python - 在shinyapps.io 上使用 python 3 in reticulate

标签 python r shiny reticulate

我在 Python 3 中有一些代码,我通过 reticulate 库在 R 中运行这些代码,以便在 shiny 应用程序中使用。它在我的本地计算机上运行良好,但是当我在shinyapps.io 中发布时,reticulate 默认使用 Python 2。

到目前为止,我尝试使用 use_python 函数,但我不确定路径:

use_python("/usr/bin/python3", require = TRUE)

日志给我错误:

2019-02-12T13:44:54.691167+00:00 shinyapps[710102]: Warning: Error in initialize_python: Python shared library '/usr/lib/libpython3.5.so' not found, Python bindings not loaded.
2019-02-12T13:44:54.697101+00:00 shinyapps[710102]:   64: stop
2019-02-12T13:44:54.697103+00:00 shinyapps[710102]:   63: initialize_python
2019-02-12T13:44:54.697104+00:00 shinyapps[710102]:   62: ensure_python_initialized
2019-02-12T13:44:54.697105+00:00 shinyapps[710102]:   61: py_run_file
2019-02-12T13:44:54.697106+00:00 shinyapps[710102]:   60: source_python
2019-02-12T13:44:54.697107+00:00 shinyapps[710102]:   59: server [/srv/connect/apps/str_telefonica/app.R#57]
2019-02-12T13:44:54.697385+00:00 shinyapps[710102]: Error in initialize_python(required_module, use_environment) : 
2019-02-12T13:44:54.697387+00:00 shinyapps[710102]:   Python shared library '/usr/lib/libpython3.5.so' not found, Python bindings not loaded.

最佳答案

要使用reticulate和Python 3将应用程序部署到shinyapps.io,您的代码应创建一个Python 3虚拟环境并在其中安装任何所需的包:

reticulate::virtualenv_create(envname = 'python3_env', 
                              python = '/usr/bin/python3')

reticulate::virtualenv_install('python3_env', 
                               packages = c('numpy'))  # <- Add other packages here, if needed

然后,无需使用 use_python() 函数,只需将 reticulate 指向您创建的 Python 3 虚拟环境即可:

reticulate::use_virtualenv('python3_env', required = T)

有关使用 Python 3 的 reticulate 将 Shiny 应用程序部署到shinyapps.io 的更完整教程,请查看 this step-by-step example .

注意:直到几个月前,reticulate 从 Python 3 调用 virtualenv 仍然默认创建了一个 Python 2 虚拟环境。然而,this was fixed截至 2019 年 10 月 8 日,在 reticulate 开发版本中。

您可以使用 R 包 remotes 安装特定版本的 reticulate 并进行修复:

remotes::install_github("rstudio/reticulate", force = T, ref = '0a516f571721c1219929b3d3f58139fb9206a3bd')

或使用任何reticulate >= v1.13.0-9001,您将能够在shinyapps.io上创建Python 3虚拟环境。

关于python - 在shinyapps.io 上使用 python 3 in reticulate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54651700/

相关文章:

python - `tf.reciprocal` 与 `tf.inv` : is there any difference?

python - 想改进这个脚本

R Shiny 所需的包和 Github

python - 不同运行函数方式之间的性能差异

python - 如何等待子进程完成、存储其输出并向输出添加前缀(不带新行)?

r - 匹配字符串,但前提是不带其他字符串

r - 计算 R 中列表或向量中的偶数

r - 选择高于阈值的所有值,然后选择低于阈值的值的随机样本

linux - 在我自己的域上运行 docker shiny app

r - Shiny :将 styleColorBar 与来自两个数据框的数据一起使用