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), но не на сервере.
Спасибо заранее, и я здесь, чтобы при необходимости предоставить другую информацию.
Даниэла
Ответы
Ответ 1
Перейдите в RStudio и найдите переменную системной среды для RSTUDIO_PANDOC
Sys.getenv("RSTUDIO_PANDOC")
Затем поместите это в свой R script перед вызовом команды визуализации.
Sys.setenv(RSTUDIO_PANDOC="--- insert directory here ---")
Это сработало для меня после того, как я изо всех сил пытался найти, как rmarkdown находит pandoc. Я должен был проверить github, чтобы посмотреть на источник.
Ответ 2
Другой вариант, чтобы это работало для всех ваших сценариев 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/"
Ответ 3
Самый простой способ решить эту проблему - это передать команду 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 отличается от несерверной версии)
Ответ 4
Эй, я просто победил эту ошибку. Я решил это, удалив 2 файла pandoc, "pandoc" и "pandoc-citeproc" из папки блестящего сервера. Затем я создал ссылку для каждого из этих файлов из папки rstudio-server. Оно работало завораживающе. Это было проблемой для меня, когда я пытался внедрить листовки в документы rmarkdown из-за запуска блестящего сервера на Linux-машине. Мне показалось странным, что когда я запустил его в rstudio на той же машине с Linux, он работал нормально, но не тогда, когда я запустил его с использованием глянцевого сервера. Таким образом, установка pandoc на серверную платформу является устаревшей. ура
Ответ 5
Если вы пытаетесь запустить скрипт из командной строки в Windows, вам просто нужно указать путь к каталогу в переменной PATH *. Вы также можете создать отдельную переменную пользователя с именем RSTUDIO_PANDOC и присвоить этой переменной каталог *. Затем закройте и снова откройте все терминалы, чтобы обновить системные пути. **
* Экспериментируйте с трейлингом/если у вас возникли проблемы. ** Я не смог указать путь UNC. // в начале пути хранились функции pandoc пакета rmarkdown. Если вы используете UNC-путь, вы должны сопоставить его с диском и указать букву диска. Есть способы сделать это динамически. Я использую DOS/пакетный скрипт, который я нашел через Google.
Ответ 6
Для тех, кто не использует RStudio, вам может понадобиться установить pandoc в вашей системе. Для меня это было
sudo pacman -S pandoc
и это сработало (Arch Linux).
Ответ 7
Если кто-то имеет эту проблему, а также использовать анаконду, возможно, у них была моя проблема. Оболочка rstudio не загружает файл .bashrc при запуске, что означает, что ваша версия pandoc установлена в anaconda Rstudio не найдет его. Установка pandoc отдельно с помощью команды вроде sudo pacman -S pandoc
работала для меня!