我有几个大型闪亮应用程序,它们可以在我的本地计算机上完美运行,但不能在我闪亮的服务器上运行,因为似乎无法加载大多数已安装的软件包。
我使用这个包是renv
因为我想避免不同闪亮应用程序中使用的包之间的依赖问题。所以我所有的 nessecary 包都包含在一个文件夹renv
中,我想从中加载它们以运行我的应用程序:
最小的工作示例:
# change path to library
.libPaths("/home/yvs/ShinyApps/test2/renv/library/R-3.6/x86_64-w64-mingw32")
# load packages
library(shiny)
library(DBI)
library(RPostgreSQL)
library(shinyalert)
# run app
shinyApp(
ui = fluidPage(
column(4,
numericInput("x", "Value", 5),
br(),
actionButton("button", "test"),
br(),
textOutput("text")
),
column(8,
tableOutput("table")),
useShinyalert()
),
server = function(input, output) {
observeEvent(input$button, {
cat("Showing", input$x, "rows\n")
shinyalert("yeah!")
})
df <- eventReactive(input$button, {
head(cars, input$x)
})
output$table <- renderTable({
df()
})
output$text <- renderText(
paste0(.libPaths()) # display path to library
)
}
)
当我调用相应的 http 页面时,此错误消息出现在我的日志文件中:
Fehler: package or namespace load failed for ‘RPostgreSQL’ in library.dynam(lib, package, package.lib):
shared object ‘RPostgreSQL.so’ not found
Ausführung angehalten
当我标记library(RPostgreSQL)
为评论时,我可以毫无错误地运行该应用程序。由于所有 packages shiny
、DBI
和仅在我的 renv 文件夹中可用(而不在默认的闪亮库中),我假设通过命令加载包RPostgreSQL
似乎有效。因此,我不认为这只是一个权限问题(我不欠管理员权限或以用户shiny运行/登录的权限。shinyalert
.libPaths()
此外,我不认为这个问题仅限于包RPostgreSQL
,因为我试图加载许多不同的包。
它适用于以下软件包:
shiny
leaflet
stats
utils
graphics
DBI
shinycssloaders
shinyalert
shinyjs
DT
.
它不适用于以下软件包:
sp
plotly
RPostgreSQL
postGIStools
dplyr
lubridate
devtools
rCharts
rjson
yaml
config
.
我至少知道以下两个类似的问题:
但是,他们都没有帮助解决我的问题。
我的本地计算机和闪亮的服务器都使用 R 3.6.3。
非常感谢任何帮助!