解决“ 500:内部服务器错误,nbconvert失败:在路径中找不到xelatex”

时间:2018-09-12 17:04:14

标签: python jupyter xelatex

每当我尝试将Jupyter笔记本导出为PDF时,都会在单独的窗口中出现以下错误:

500 : Internal Server Error
The error was:

nbconvert failed: xelatex not found on PATH, if you have not installed xelatex you may need to do so. Find further instructions at https://nbconvert.readthedocs.io/en/latest/install.html#installing-tex.

我正在运行macOS Sierra 10.12.6。

我尝试过的事情:

  • 通过pip(在Jupyter笔记本中)和conda(终端)重新安装nbconvert
  • 为Mac安装xelatex
  • 重新安装Mactex
  • 安装pandoc(通过pip和“ conda install -c conda-forge pandoc”)

运行

!echo $PATH

收益:

/Users/ed/anaconda/bin:/Users/ed/anaconda/bin:/usr/bin:/bin:/usr/sbin:/sbin

我按照@einsweniger建议在这里找到了包含xelatex的目录:/ usr / local / texlive / bin / x86_64-darwin。我将XeLatex复制并粘贴到上面的bin目录中,并得到一个新错误:

```nbconvert failed: PDF creating failed, captured latex output:
warning: kpathsea: configuration file texmf.cnf not found in these directories: /Users/e/anaconda/bin:/Users/ed/anaconda/bin/share/texmf-local/web2c:/Users/ed/anaconda/bin/share/texmf-dist/web2c:/Users/ed/anaconda/bin/share/texmf/web2c:/Users/ed/anaconda/bin/texmf-local/web2c:/Users/ed/anaconda/bin/texmf-dist/web2c:/Users/ed/anaconda/bin/texmf/web2c:/Users/ed/anaconda:/Users/edefilippis/anaconda/share/texmf-local/web2c:/Users/e/anaconda/share/texmf-dist/web2c:/Users/ed/anaconda/share/texmf/web2c:/Users/ed/anaconda/texmf-
This is XeTeX, Version 3.14159265-2.6-0.99999 (TeX Live 2018) (preloaded format=xelatex)

kpathsea: Running mktexfmt xelatex.fmt
I can't find the format file `xelatex.fmt'!
```

我也将xelatex.fmt放在目录中,但是仍然出现错误。

8 个答案:

答案 0 :(得分:5)

根据basictex faq的说法,我不习惯Mac安装路径,我收集了可执行文件应该存放在/usr/local/texlive/bin/x86_64-darwin中 在终端中运行which xelatex可能也有助于查找命令的位置,但这仅在目录已在PATH变量中时有效。

如果另一种方法不在您的PATH中,它将在运行find / -name 'xelatex',因此您可能会发现它(可能需要一些时间,因为这会搜索整个硬盘)。

找到它并将路径添加到PATH变量后,还应该通过运行来检查jupyter是否具有正确的PATH

import os
print(os.environ['PATH'])

在笔记本中。

答案 1 :(得分:1)

过去在Windows和Linux中使用tensorflow时,我在python中遇到了类似的问题。正如其他人所指出的那样,使用PATH是可行的方法(例如,如果是Linux,则在.bashrc中进行更新),但是我发现下面的代码可以逐个脚本地解决路径问题。

import sys
if "\your\path\to\xelatex" not in sys.path:
    print('adding path') # I just add this to know if the path was present or not.
    sys.path.append("\your\path\to\xelatex")

基本上会检查PATH以查找您要寻找的内容,然后将其添加(如果缺少)。您甚至可能不需要'if'语句。
也许不是最实用的方法对我来说效果很好,因为我知道所讨论的路径可能是“很少使用”或“一次性使用”的PATH添加...

因此,正如上面的注释所指出的(我想您已经拥有)找到了文件的位置,并使用上述代码添加了该位置。

更多阅读内容: https://docs.python.org/3/tutorial/modules.html 6.2标准模块

答案 2 :(得分:1)

我遇到了同样的问题。正如人们先前所说,问题在于在您的PATH环境变量中找不到xlatex。

一个对我有用的解决方案是在笔记本上运行以下命令:

!export PATH=/Library/TeX/texbin:$PATH

或仅在命令行中:

export PATH=/Library/TeX/texbin:$PATH

然后从命令行(在虚拟环境中,如果有的话)在命令行中运行到pdf的导出,如下所示:

 jupyter nbconvert your_notebook.ipynb --to pdf

这应该在运行的同一目录下创建笔记本的pdf。

答案 3 :(得分:0)

如果有可用更新,请尝试更新Jupyter

答案 4 :(得分:0)

"env": {"PATH":"$PATH"}中的我添加kernel.json到您的/opt/anaconda3/share/jupyter/kernels/python3/kernel.json中。

JupyterLab或Anaconda似乎默认情况下会覆盖系统PATH,如果您设置了该PATH,那么PATH在JupyterLab和您的Shell中将是相同的,因此,如果您安装了任何自定义内容(如xelatex),它将显示在JupyterLab中。

答案 5 :(得分:0)

在 mac 上,您可以使用 homebrew 安装 mactex,如下所示:brew install --cask mactex

答案 6 :(得分:0)

在您的 jupyter 终端(或您的环境中,如果有的话)运行此命令,关闭所有 jupyter notebook 选项卡并重新打开它,然后将 notebook 转换为 pdf

pip install --upgrade --user nbconvert

答案 7 :(得分:0)

  1. 如果未更新,请更新/重新安装 Anaconda。
  2. 现在通过链接 https://chromium.woolyss.com/download/en/ 安装 Chromium 并将其设为默认浏览器。
  3. 然后使用此浏览器运行 jupyter notebook。
  4. 最后在 jupyter notebook 中使用“下载为”选项,然后通过 pyppeteer (.html) 选择使用 PDF 的选项

你好!!它起作用了..