Подтвердить что ты не робот

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), но не на сервере.

Спасибо заранее, и я здесь, чтобы при необходимости предоставить другую информацию.

Даниэла

4b9b3361

Ответ 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 работала для меня!