在 shinyapps.io 上使用 python 3
Use python 3 in reticulate on shinyapps.io
我在 Python 3 中有一些代码,我在 运行 中通过 reticulate
库在 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)
有关使用 reticulate
和 Python 3 至 shinyapps.io 部署 Shiny 应用程序的更完整教程,请查看 this step-by-step example。
注意:直到几个月前,reticulate
从Python3调用virtualenv
仍然创建了一个Python2默认虚拟环境。但是,截至 2019 年 10 月 8 日 reticulate
的开发版本中 this was fixed。
您可以使用 R 包 remotes
:
安装带有修复程序的特定版本 reticulate
remotes::install_github("rstudio/reticulate", force = T, ref = '0a516f571721c1219929b3d3f58139fb9206a3bd')
或使用任何 reticulate
>= v1.13.0-9001,您将能够在 shinyapps.io.
上创建 Python 3 个虚拟环境
我在 Python 3 中有一些代码,我在 运行 中通过 reticulate
库在 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)
有关使用 reticulate
和 Python 3 至 shinyapps.io 部署 Shiny 应用程序的更完整教程,请查看 this step-by-step example。
注意:直到几个月前,reticulate
从Python3调用virtualenv
仍然创建了一个Python2默认虚拟环境。但是,截至 2019 年 10 月 8 日 reticulate
的开发版本中 this was fixed。
您可以使用 R 包 remotes
:
reticulate
remotes::install_github("rstudio/reticulate", force = T, ref = '0a516f571721c1219929b3d3f58139fb9206a3bd')
或使用任何 reticulate
>= v1.13.0-9001,您将能够在 shinyapps.io.