尽管使用 pip 和 sudo apt-get install 安装,但在 Ubuntu 上找不到 Pandoc

Posted

技术标签:

【中文标题】尽管使用 pip 和 sudo apt-get install 安装,但在 Ubuntu 上找不到 Pandoc【英文标题】:Pandoc could not be found on Ubuntu despite installing with pip and sudo apt-get install 【发布时间】:2022-01-03 05:26:31 【问题描述】:

我是using Nikola,一个静态网站生成器,来建一个网站。我正在通过Github Actions 自动化它的构建。我还想使用Pandoc 来帮助将我的markdown 转换为html,但我注意到Pandoc 不包含在原始操作中。因此,我不得不尝试弄清楚自己如何包含它。然而,FileNotFound 错误让我一次又一次地受挫。

首先,我尝试编辑操作,以便在 Ubuntu 环境中安装 Pandoc。下面是我编辑的动作版本。我只添加了Install Pandoc on Ubuntu 步骤。

on: [push]

jobs:

    nikola-build:
       runs-on: ubuntu-latest
       steps:
       - name: Install Pandoc on Ubuntu
         run: sudo apt-get install -y pandoc

       - name: Check out
         uses: actions/checkout@v2

       - name: Build and Deploy Nikola
         uses: getnikola/nikola-action@v3
         with:
           dry_run: false

当这再次失败并通知我找不到 Pandoc 时,我在我的存储库中添加了一个 requirements.txt 文件:

Pandoc

我尝试再次运行该操作。两个安装——我写的操作步骤和pip install pandoc——运行没有任何问题并且成功。然而到了Nikola开始建站这一步,好像不管怎么做都渲染失败,因为找不到Pandoc:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/nikola/plugins/compile/pandoc.py", line 76, in compile
    subprocess.check_call(['pandoc', '-o', dest, source] + self._get_pandoc_options(source))
  File "/usr/local/lib/python3.8/subprocess.py", line 359, in check_call
    retcode = call(*popenargs, **kwargs)
  File "/usr/local/lib/python3.8/subprocess.py", line 340, in call
    with Popen(*popenargs, **kwargs) as p:
  File "/usr/local/lib/python3.8/subprocess.py", line 858, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/local/lib/python3.8/subprocess.py", line 1704, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'pandoc'

我到处寻找类似问题的解决方案,但它们很少而且已经过时。如果您能深入了解这个问题、有什么问题、我能做些什么来解决它等等,我将不胜感激。

【问题讨论】:

pandoc 的安装可能存在一些问题,似乎有一些证据表明无法正常工作,因此 AskUbuntu 上的这个答案建议改用 pandoc 自己的包:askubuntu.com/a/687676/8 嗨@mechanical_meat,谢谢你的建议。我用一个相当新版本的 Pandoc (2.14) 尝试了你的提示,它下载成功,但不知何故,它仍然找不到它,并出现上述相同的错误。我想知道安装位置是否会影响这个?例如。会不会是 Nikola 在错误的位置寻找它? 快速研究表明这在某种程度上与 cabal 合作——因为我相信它是用 Haskell 编写的,所以试试这个:askubuntu.com/a/33443/8 让 cabal 走上你的道路。但是我不知道 Nikola 是否需要在其他任何地方进行修改......你可以尝试搜索“Nikola pandoc on path”或类似的东西。祝你好运! 【参考方案1】:

pandoc 不是 Python 包。它是一个独立且非常强大的命令行工具。 nikola 调用命令行工具来完成它的工作。您需要使用他们建议的sudo apt install pandoc 命令行来安装它。

【讨论】:

【参考方案2】:

我发现系统无法找到 Pandoc,因为整个项目是在 Docker 容器中运行的;我之前在系统本身上安装了 Pandoc,但失败了。我可以通过修改shell script 在容器中安装 Pandoc 来解决问题。

【讨论】:

以上是关于尽管使用 pip 和 sudo apt-get install 安装,但在 Ubuntu 上找不到 Pandoc的主要内容,如果未能解决你的问题,请参考以下文章

哪些pip包可以下载sudo apt-get install python3-pip的源代码?

ubuntu 安装pip

python-dev如何安装 sudo apt-get install python-dev ?

django学习1-django安装

在ubuntu中我们使用sudo apt-get install 或者dpkg -i *.deb安装软件时,常常提示“有未能满足的依赖关系“,解决方法

运行“sudo pip”有啥风险?