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

2024-06-02 11:42:23 发布

您现在位置:Python中文网/ 问答频道 /正文

每当我尝试将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安装Xeletex
  • 重新安装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

我根据@einsweiger的建议在这里找到了包含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放在目录中,但仍然会得到错误信息。


Tags: 目录sharebinusrlocalnotanacondaconda
3条回答

我遇到了同样的问题。如前所述,问题在于在PATH环境变量中找不到xlatex。

一个对我有效的解决方案是从笔记本上运行以下内容:

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

或者在命令行中简单地:

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

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

 jupyter nbconvert your_notebook.ipynb --to pdf

这将在运行笔记本的同一目录上创建笔记本的pdf文件。

在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")

基本上会检查路径,看看它是什么,然后添加它,如果它是丢失的。你甚至可能不需要“if”语句。
也许对我来说,最实用的方法并不管用,因为我知道问题的路径可能是“很少使用”或“一次性使用”的路径添加。。。

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

再多读一点: https://docs.python.org/3/tutorial/modules.html 6.2标准模块

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

另一个方法是运行find / -name 'xelatex',如果它不在您的路径中,那么您可能会以这种方式找到它(可能需要一段时间,因为这将搜索整个硬盘驱动器)。

找到它并将路径添加到path变量后,还应该通过运行

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

在笔记本里。

相关问题 更多 >