You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署集成Python的Shiny应用至shinyapps.io遇Python环境错误

解决shinyapps.io上Reticulate Python环境配置错误的方案

核心问题分析

shinyapps.io的运行环境不允许在应用启动时动态创建虚拟环境,且默认的Python路径检测逻辑与本地不同,导致virtualenv_create无法找到合适的Python版本。


具体修复步骤

1. 调整R代码中的虚拟环境创建逻辑

删除R代码中运行时创建虚拟环境的硬编码命令,仅保留本地开发时的创建逻辑,部署时复用shinyapps.io自动生成的环境:

library(reticulate)

# 仅本地环境创建虚拟环境,部署阶段跳过
if (Sys.getenv("SHINYAPPS_IO") != "TRUE") {
  virtualenv_create("openai-env", python = "python3")
  virtualenv_install("openai-env", packages = c("openai"))
}

use_virtualenv("openai-env", required = TRUE)
source_python("Python_Script.py")

2. 修正.Rprofile的环境判断规则

shinyapps.io的运行用户并非shiny,改用环境变量SHINYAPPS_IO判断环境更可靠,修改后的.Rprofile:

VIRTUALENV_NAME = 'openai-env'

if (Sys.getenv("SHINYAPPS_IO") == "TRUE") {
  # shinyapps.io环境:指定预创建的虚拟环境Python路径
  Sys.setenv(RETICULATE_PYTHON = paste0("/home/shiny/.virtualenvs/", VIRTUALENV_NAME, "/bin/python"))
} else if (Sys.info()[['user']] == 'rstudio-connect') {
  # RStudio Connect环境配置(保留原有逻辑)
  Sys.setenv(PYTHON_PATH = '/opt/python/3.7.7/bin/python3')
  Sys.setenv(VIRTUALENV_NAME = paste0(VIRTUALENV_NAME, '/'))
  Sys.setenv(RETICULATE_PYTHON = paste0(VIRTUALENV_NAME, '/bin/python'))
} else {
  # 本地环境配置(保留原有逻辑)
  options(shiny.port = 7450)
  Sys.setenv(PYTHON_PATH = 'python3')
  Sys.setenv(VIRTUALENV_NAME = VIRTUALENV_NAME)
}

3. 确保requirements.txt正确配置并上传

在应用根目录创建或完善requirements.txt,明确列出所有Python依赖:

openai>=1.0.0
# 其他依赖包需在此补充

shinyapps.io会自动读取该文件,在部署阶段创建对应虚拟环境并安装依赖。

4. 指定Python版本(可选)

若需要特定Python版本,在根目录创建runtime.txt文件,示例:

python-3.10.12

选择shinyapps.io支持的稳定版本即可。


内容的提问来源于stack exchange,提问作者Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 09:13:21