Как решить проблему с pando c - PullRequest
1 голос
/ 16 июня 2020

Я столкнулся с проблемой при использовании saveWidget в VSCode, которая может быть вызвана pandoc.

Когда я запускаю следующую строку в Rstudio, она работает хорошо, и mtcars.html может быть сгенерировано

htmlwidgets::saveWidget(DT::datatable(mtcars), "mtcars.html", selfcontained = TRUE, title = "mtcars")

Однако, когда я перемещаю тот же код в VSCode, он выдает ошибку, говоря, что

Error in htmlwidgets::saveWidget(DT::datatable(mtcars), "mtcars.html",  : 
  Saving a widget with selfcontained = TRUE requires pandoc. For details see:
https://github.com/rstudio/rmarkdown/blob/master/PANDOC.md

Я подозреваю, что VSCode не распознал путь к pandoc, поскольку я набрал find_pandoc в VScode, чтобы найти версию и каталог, показав, что

> rmarkdown::find_pandoc()
$version
[1] '0'

$dir
NULL

Однако в Rstudio он показывает

> find_pandoc()
$version
[1] ‘2.7.2’

$dir
[1] "C:/Program Files/RStudio/bin/pandoc"

1 Ответ

2 голосов
/ 18 июня 2020

Чтобы понять, что происходит, давайте взглянем на исходный код rmarkdown:::find_pandoc(). Здесь мы можем найти следующие строки:

sys_pandoc <- find_program("pandoc")
sources <- c(Sys.getenv("RSTUDIO_PANDOC"), if (nzchar(sys_pandoc)) dirname(sys_pandoc))

sources затем используются для получения пути pandoc. Я подозреваю, что в вашем случае RSTUDIO_PANDOC не установлен, поэтому rmarkdown:::find_pandoc() полагается на find_program("pandoc"), чтобы найти путь. Если вы, в свою очередь, посмотрите его исходный код, вы обнаружите, что путь определяется запуском Sys.which, что эквивалентно извлечению пути из оболочки:

Системная команда, которая сообщает на полных именах пути к исполняемому файлу (включая исполняемый скрипт), который будет выполняться оболочкой ...

При этом вам нужно добавить путь к pando c в PATH переменная среды в вашей системе.

...