pandoc версии 1.12.3 или выше требуется и не найден (R блестящий)
У меня проблема с генерацией отчета в формате PDF из моего приложения, которое размещено на сервере.
приложение работает нормально, но когда я нажимаю кнопку, чтобы загрузить отчет, я получаю эту ошибку:
pandoc version 1.12.3 or higher is required and was not found.
Проблема в том, что если я наберу pandoc -v
Я получил:
pandoc 1.12.3.3
Compiled with texmath 0.6.6, highlighting-kate 0.5.6.1.
Syntax highlighting is supported for the following languages:
actionscript, ada, apache, asn1, asp, awk, bash, bibtex, boo, c, changelog,
clojure, cmake, coffee, coldfusion, commonlisp, cpp, cs, css, curry, d,
diff, djangotemplate, doxygen, doxygenlua, dtd, eiffel, email, erlang,
fortran, fsharp, gnuassembler, go, haskell, haxe, html, ini, java, javadoc,
javascript, json, jsp, julia, latex, lex, literatecurry, literatehaskell,
lua, makefile, mandoc, markdown, matlab, maxima, metafont, mips, modelines,
modula2, modula3, monobasic, nasm, noweb, objectivec, objectivecpp, ocaml,
octave, pascal, perl, php, pike, postscript, prolog, python, r,
relaxngcompact, restructuredtext, rhtml, roff, ruby, rust, scala, scheme,
sci, sed, sgml, sql, sqlmysql, sqlpostgresql, tcl, texinfo, verilog, vhdl,
xml, xorg, xslt, xul, yacc, yaml
Default user data directory: /home/daniele/.pandoc
Copyright (C) 2006-2013 John MacFarlane
Web: http://johnmacfarlane.net/pandoc
This is free software; see the source for copying conditions. There is no
warranty, not even for merchantability or fitness for a particular purpose.
Итак, я полагаю, у меня есть подходящая версия для этого. TexLive также установлен и путь находится в $PATH
,
Server.R
library(shiny)
library(drsmooth)
library(shinyBS)
library(knitr)
library(xtable)
library(rmarkdown)
shinyServer(function(input, output,session) {
output$downloadReport <- downloadHandler(
filename = function() {
paste('report', sep = '.','pdf')
},
content = function(file) {
src <- normalizePath('report.Rmd')
# temporarily switch to the temp dir, in case you do not have write
# permission to the current working directory
owd <- setwd(tempdir())
on.exit(setwd(owd))
file.copy(src, 'report.Rmd')
library(rmarkdown)
out <- render('report.Rmd')
file.rename(out, file)
})
output$tb <- renderUI({
p(h4("Report")),
"Dowload a the report of your analysis in a pdf format",
tags$br(),downloadButton('downloadReport',label="Download report"),
tags$em("This option will be available soon")
})
})
* report.Rmd * не содержит никаких вычислений, это только текст. Генерация PDF отлично работает на моей локальной версии (MacOS), но не на сервере.
Заранее спасибо, и я здесь, чтобы предоставить другую информацию, если это необходимо.
Daniele
12 ответов
Зайдите в RStudio и найдите системную переменную среды для RSTUDIO_PANDOC
Sys.getenv("RSTUDIO_PANDOC")
Затем поместите это в свой скрипт R до вызова команды рендеринга.
Sys.setenv(RSTUDIO_PANDOC="--- insert directory here ---")
Это сработало для меня после того, как я изо всех сил пытался найти, как rmarkdown находит Пандока. Мне пришлось проверить GitHub, чтобы посмотреть на источник.
Другой вариант, чтобы это работало для всех ваших сценариев R, - это глобальное определение этой переменной.
В Debian/Ubuntu добавьте следующую строку в ваш файл.bashrc:
export RSTUDIO_PANDOC=/usr/lib/rstudio/bin/pandoc
В macOS добавьте следующее в ваш файл.bash_profile:
export RSTUDIO_PANDOC=/Applications/RStudio.app/Contents/MacOS/pandoc
В Windows (используя Git Bash) добавьте в файл.bashrc следующее:
export RSTUDIO_PANDOC="/c/Program Files/RStudio/bin/pandoc/"
Самый простой способ решить эту проблему - это передать команду Sys.setenv(..) внутри команды crontab перед вызовом RMarkdown::render. Вам нужно разделить две команды точкой с запятой:
R -e "Sys.setenv(RSTUDIO_PANDOC='/usr/lib/rstudio-server/bin/pandoc'); rmarkdown::render('File.Rmd', output_file='output.html')"
(Помните, что путь к rstudio-server отличается от несерверной версии)
Я использую Arch Linux и RStudio... единственное, что у меня сработало, это:
sudo pacman -S pandoc
:)
Для тех, кто не использует RStudio, вам может потребоваться установить pandoc в вашей системе. Для меня это было
sudo pacman -S pandoc
и это сработало (Arch Linux).
Для Windows 10 RStudio 2022.12.0
Pandoc устанавливается вместе с RStudio, поэтому я предпочитаю использовать уже установленный pandoc.exe. Насколько я могу судить, место его установки время от времени меняется. За последние пару лет я видел его в следующих местах (верхний — там, где он находится с моей текущей версией RStudio).
Январь 2023 г. — «C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools»
Август 2022 г. — «C:/Program Files/RStudio/bin/quarto/bin/tools»
«C:/Program Files/RStudio/bin/quarto/bin"
"C:/Program Files/RStudio/bin/pandoc"
Как только вы узнаете, где находится предустановленный pandoc, вы можете включить эту строку в свой файл .R, как указано в верхнем ответе от Chris/Yihui, и это работает для меня.
Sys.setenv(RSTUDIO_PANDOC = "C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools")
Если у кого-то есть эта проблема, а также использовать анаконду, возможно, у них была моя проблема. Оболочка rstudio не загружает файл.bashrc при запуске, что означает, что ваша версия pandoc установлена в anaconda Rstudio не найдет его. Установка pandoc отдельно с помощью команды вроде sudo pacman -S pandoc
работал на меня!
У меня была аналогичная проблема с
pandoc
на Debian 10 при создании документа с ограниченным объемом ресурсов. в
Makefile
то, что я сделал, было:
# use rstudio pandoc
# this rule sets the PANDOC environment variable from the shell
build_book1:
export RSTUDIO_PANDOC="/usr/lib/rstudio/bin/pandoc";\
Rscript -e 'bookdown::render_book("index.Rmd", "bookdown::gitbook")'
# use rstudio pandoc
# this rule sets the environment variable from R using multilines
build_book2:
Rscript -e "\
Sys.setenv(RSTUDIO_PANDOC='/usr/lib/rstudio/bin/pandoc');\
bookdown::render_book('index.Rmd', 'bookdown::gitbook')"
Эти два правила эквивалентны и успешно связывают книгу.
Мне просто не нравились длинные
Rscript
команда:
Rscript -e "Sys.setenv(RSTUDIO_PANDOC='/usr/lib/rstudio/bin/pandoc'); bookdown::render_book('index.Rmd', 'bookdown::gitbook')"
В Windows и без RStudio вы можете установить pandoc с помощью
choco install pandoc
или через веб-сайт pandoc, https://pandoc.org/ .
Не забудьте перезапустить IDE, чтобы убедиться, что новая установка активируется.
Эй, я просто победил эту ошибку. Я решил эту проблему, удалив 2 файла pandoc, "pandoc" и "pandoc-citeproc" из папки блестящего сервера. Затем я создал ссылку для каждого из этих файлов из папки rstudio-server. Оно работало завораживающе. Это было проблемой для меня, когда я пытался встроить листовки в документы rmarkdown, используя блестящий сервер на машине с Linux. Мне показалось странным, что когда я запустил его в rstudio на той же машине с Linux, он работал нормально, но не тогда, когда я запустил его с использованием глянцевого сервера. Таким образом, установка pandoc на блестящий сервер устарела. ура
Если вы пытаетесь запустить скрипт из командной строки в Windows, вам просто нужно указать путь к каталогу в переменной PATH *. Вы также можете создать отдельную переменную User с именем RSTUDIO_PANDOC и присвоить этой переменной каталог *. Затем закройте и снова откройте все терминалы, чтобы обновить системные пути. **
* Экспериментируйте с трейлингом / если у вас возникли проблемы. ** Я не смог указать путь UNC. // в начале пути хранились функции pandoc пакета rmarkdown. Если вы используете UNC-путь, вы должны сопоставить его с диском и указать букву диска. Есть способы сделать это динамически. Я использую DOS/ пакетный скрипт, который я нашел через Google.
Я столкнулся с аналогичной проблемой в плагине IntelliJ R. Я решил это, скопировав файл pandoc в~/.IntelliJIdea2019.3/config/plugins/rplugin/pandoc