web-dev-qa-db-fra.com

Résolution "500: Erreur interne du serveur, échec de nbconvert: xelatex introuvable dans PATH"

Chaque fois que j'essaie d'exporter un bloc-notes Jupyter au format PDF, l'erreur suivante s'affiche dans une fenêtre séparée:

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.

Je suis sous macOS Sierra 10.12.6.

Choses que j'ai essayées:

  • Réinstallation de nbconvert via pip (dans le cahier Jupyter) et conda (terminal)
  • Installation de xelatex pour Mac
  • Réinstaller Mactex
  • Installation de pandoc (via pip et via "conda install -c conda-forge pandoc")

Fonctionnement

!echo $PATH

Rendements:

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

J'ai localisé le répertoire contenant xelatex selon la suggestion de @einsweniger ici:/usr/local/texlive/bin/x86_64-darwin. J'ai copié et collé XeLatex dans le répertoire bin ci-dessus et j'ai une nouvelle erreur:

```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'!
```

J'ai également mis xelatex.fmt dans le répertoire, mais je reçois toujours l'erreur. 

5
Parseltongue

Je ne suis pas habitué aux chemins d'installation Mac, d'après ce que dit la basictex faq , je suppose que les exécutables doivent résider dans le /usr/local/texlive/bin/x86_64-darwin Exécuter which xelatex dans un terminal peut également aider à localiser la commande, mais cela ne fonctionne que si le répertoire est déjà dans votre variable PATH.

Une autre méthode serait d'exécuter find / -name 'xelatex' si ce n'est pas dans votre PATH, donc vous pourriez le trouver de cette façon (cela peut prendre un certain temps car cela va vous chercher dans tout votre disque dur).

Une fois que vous l'avez trouvé et ajouté le chemin d'accès à votre variable PATH, vous devez également vérifier si le jupyter a le bon PATH en exécutant

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

dans un cahier.

4
einsweniger

J'ai déjà rencontré des problèmes similaires dans le passé avec des chemins en python lors de l'utilisation de tensorflow sous Windows et Linux. Comme le soulignent d’autres, l’utilisation de PATH est la voie à suivre (mise à jour dans .bashrc s’il s’agissait de linux), mais j’ai trouvé le code ci-dessous pour résoudre les problèmes de chemin d’accès script par script.

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

essentiellement, vérifierait PATH pour ce que vous cherchez et l'ajouterait s'il manquait. Vous n'avez probablement même pas besoin de la déclaration 'if'.
Peut-être que ce n’est peut-être pas la manière la plus pratique de fonctionner correctement pour moi, car je sais que le chemin en question est peut-être un chemin «rarement utilisé» ou «à usage unique», ajoute-t-il ...

Ainsi, comme cela a été souligné dans les commentaires ci-dessus (et je pense que vous l’avez déjà fait), recherchez l’emplacement du fichier et ajoutez son emplacement à l’aide du code ci-dessus. 

Un peu plus de lecture à ce sujet: https://docs.python.org/3/tutorial/modules.html 6.2 Modules standard

1
Steve Carter

Si une mise à jour est disponible, essayez peut-être de mettre à jour Jupyter.

0
D Manokhin