当我尝试将我的(网状驱动的)Shiny 应用程序部署到 shinyapps.io 时,我收到以下错误:
Error in value[[3L]](cond) : invalid version specification ‘20.1b1’
Calls: local ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous>
Execution halted
虽然它不是明确的,但我认为错误是指 pip 版本,我从未明确指定过。
这是用户界面和服务器功能之前的代码部分:
library(reticulate)
library(shiny)
virtualenv_create(envname = "elicit", python="python3")
virtualenv_install("elicit", packages = c('numpy', 'Gpy'))
use_virtualenv("elicit", required = TRUE)
当我将其与 UI 和服务器中的任何与 Python 相关的代码一起注释掉时,一切正常。
如何设置网站请求的有效版本?我看到 reticulate::virtualenv
有一个 pip_options
参数,但我找不到有关如何使用它的有用文档。
我在设置虚拟和 conda 环境方面也不是很熟练,所以我很可能会错过一些基本步骤。
更新
我注意到,如果我切换 use_virtualenv
和 virtualenv_install
调用的顺序,我会收到不同的错误:
ERROR: The requested version of Python
('~/.virtualenvs/elicit/bin/python') cannot be used, as another version
of Python ('/usr/bin/python3') has already been initialized. Please
restart the R session if you need to attach reticulate to a different
version of Python.
Error in value[[3L]](cond) :
failed to initialize requested version of Python
Calls: local ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous>
Execution halted
我已经尝试了所有我能想到的方法,但还是无法解决这个问题。
最佳答案
我实际上找到了解决这个问题的方法。由于 pip 的 bug 版本在您创建 virtualenv 后立即安装,因此我强制卸载了它,然后安装了构建应用程序时有效的版本。这是我使用的代码:
virtualenv_create(envname = "python_environment", python = "python3")
virtualenv_remove(envname = "python_environment", packages = "pip")
virtualenv_install(envname = "python_environment", packages = c("pip==19.0.3","numpy","nltk","torch"), ignore_installed = TRUE)
use_virtualenv("python_environment", required = TRUE)
关于python - Shiny 应用程序的版本规范无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61361954/