应用程序上的版本规范无效

2024-09-22 16:34:53 发布

您现在位置:Python中文网/ 问答频道 /正文

当我尝试将我的(网状供电的)闪亮应用程序部署到shinyapps.io时,出现以下错误:

Error in value[[3L]](cond) : invalid version specification ‘20.1b1’
Calls: local ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous>
Execution halted

虽然它不是显式的,但我认为错误是指我从未显式指定的pip版本

这是ui和服务器功能前面的代码部分:

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_virtualenvvirtualenv_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

我已经尝试了我能想到的一切,但我也不能得到修复


Tags: oftoinvirtualenvvalueversionlocal错误
2条回答

我实际上找到了解决这个问题的办法。由于在您创建virtualenv时就安装了有缺陷的pip版本,因此我强制卸载了它,然后安装了我构建应用程序时运行的版本。以下是我使用的代码:

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)

我写这篇文章是对已被接受的答案的评论,但我也将这篇文章作为一个更好的可视性和进一步解释的答案

我的案例的最终效果是创建一个.Rprofile文件,其中包含以下行:

Sys.setenv(RETICULATE_PYTHON = "~/.virtualenvs/elicit/bin/python3")

该文件应位于与app.R相同的文件夹中,并应部署到远程服务器。最后的app.R文件看起来就像问题中发布的文件


更新:这最终又坏了,对我来说,修复它的方法是删除并重新安装pip(正如theThalamus所指出的),但没有指定pip版本。所以app.R看起来像这样:

virtualenv_create(...)  # create virtual environment
virtualenv_remove(envname = "python_environment", packages = "pip")
virtualenv_install(envname = "python_environment", packages = "pip")
virtualenv_install(...)  # install other packages

两个virtualenv_install实例可能可以合并,但我决定将它们分开以突出显示修复

相关问题 更多 >