从Shiny应用调用Python脚本时无法找到依赖库的问题求助
解决Shiny调用Python脚本找不到Azure库的问题
核心原因
Shiny Server运行时使用的Python环境和你终端登录用户的Python环境不一致,导致终端安装的库无法被Shiny调用的Python识别。
解决方法
1. 指定终端使用的Python解释器路径
先在终端执行which python3,得到你平时运行脚本的Python绝对路径(比如/home/linuxadmin/.local/bin/python3),然后修改Shiny代码中的system命令,用这个绝对路径代替python3:
server <- function(input, output, session) { observeEvent(input$submitid,{ source <- input$caption destination <- input$caption2 # 替换成你终端的Python绝对路径 system(paste0('/home/linuxadmin/.local/bin/python3 /home/linuxadmin/Desktop/ADLS_test2.py ', source, ' ', destination)) output$info <- paste0('Source : ', source, ' | Destination : ', destination) }) }
注意:原代码中renderText是用于UI输出的逻辑,这里直接取input$caption即可,不需要用renderText包装变量。
2. 在Python脚本中手动添加库路径
先在终端执行pip show azure-identity,找到输出中的Location字段(比如/home/linuxadmin/.local/lib/python3.8/site-packages),然后在Python脚本的最开头添加以下代码:
import sys # 替换成你从pip show得到的Location路径 sys.path.append("/home/linuxadmin/.local/lib/python3.8/site-packages") # 之后再导入azure库 from azure.identity import DefaultAzureCredential
3. 给Shiny Server运行用户安装依赖
Shiny Server默认以shiny用户运行,切换到该用户并安装所需库:
sudo -u shiny pip install azure-identity azure-storage-blob azure-keyvault-secrets
内容的提问来源于stack exchange,提问作者msr_003
相关产品推荐
相关产品推荐

