web-dev-qa-db-ja.com

「500:内部サーバーエラー、nbconvertが失敗しました:PATHに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を配置しましたが、まだエラーが発生しています。

6
Parseltongue

同じ問題が発生しました。以前に述べたように、問題はxlatexがPATH環境変数に見つからないことにあります。

私のために働いた解決策は、ノートブックから次を実行することでした:

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

または、単にコマンドラインで:

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

そして、次のようにコマンドラインからPDFへのエクスポートを実行します(適切な環境がある場合は仮想環境内で)。

 jupyter nbconvert your_notebook.ipynb --to pdf

これにより、実行中の同じディレクトリにノートブックのPDFが作成されます。

2
Nico

過去にWindowsとLinuxでtensorflowを使用するときにpythonのパスで同様の問題に遭遇しました。他の人によって指摘されているように、PATHを使用する方法です。 bashrc(Linuxの場合)ですが、スクリプトごとにパスの問題を解決するために以下のコードを見つけました。

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 add ...

したがって、上記のコメントで指摘されたように(そして、既に持っていると思いますが)、ファイルの場所を見つけ、上記のコードを使用してその場所を追加します。

それについてのさらなる読書: https://docs.python.org/3/tutorial/modules.html 6.2標準モジュール

1
Steve Carter

利用可能な更新がある場合は、Jupyterを更新してみてください。

0
user10367815