Oplossen van “500: interne serverfout, nbconvert mislukt: xelatex niet gevonden in PATH”

Telkens wanneer ik een Jupyter-notebook als PDF probeer te exporteren, krijg ik de volgende foutmelding in een apart venster:

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.

Ik gebruik macOS Sierra 10.12.6.

Dingen die ik heb geprobeerd:

  • Nbconvert opnieuw installeren via pip (in de Jupyter-notebook) en conda (terminal)
  • Xelatex voor Mac installeren
  • Mactex opnieuw installeren
  • Pandoc installeren (zowel via pip als via “conda install -c conda-forge pandoc”)

Hardlopen

!echo $PATH

Opbrengst:

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

Ik heb de map met xelatex gevonden volgens de suggestie van @einsweniger hier: /usr/local/texlive/bin/x86_64-darwin. Ik heb XeLatex gekopieerd en in de bin-map hierboven geplakt en krijg een nieuwe foutmelding:

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

Ik plaats ook xelatex.fmt in de map, maar krijg nog steeds de fout.


Antwoord 1, Autoriteit 100%

Ik heb hetzelfde probleem tegengekomen. Zoals die eerder waren vermeld, ligt het probleem dat Xlatex niet wordt gevonden in de variabele Padomgeving.

Een oplossing die voor mij werkte, was om het volgende uit de notebook uit te voeren:

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

of in een opdrachtregel eenvoudig:

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

En voer vervolgens de exporteren naar PDF uit vanuit een opdrachtregel (in uw virtuele omgeving als er één op zijn plaats is) als volgt:

jupyter nbconvert your_notebook.ipynb --to pdf

Dit zou een PDF van uw notebook moeten maken op dezelfde map die wordt uitgevoerd.


Antwoord 2, Autoriteit 36%

Ik ben niet gewend aan Mac-installatiepaden, van wat de basictex faqzegt, ik heb begrepen dat de uitvoerbare bestanden in /usr/local/texlive/bin/x86_64-darwinmoeten staan
Het uitvoeren van which xelatexin een terminal kan ook helpen om te vinden waar de opdracht is, maar dat werkt alleen als de map al in uw PATH-variabele staat.

Een andere methode is het uitvoeren van find / -name 'xelatex'als het niet in je PATH staat, dus je zou het op die manier kunnen vinden (kan even duren omdat dit je hele harde schijf doorzoekt).

Zodra je het hebt gevonden en het pad aan je PATH-variabele hebt toegevoegd, moet je ook controleren of de jupyter het juiste PATH heeft door het uit te voeren

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

in een notitieblok.


Antwoord 3, autoriteit 5%

Ik ben in het verleden soortgelijke problemen tegengekomen met paden in python bij het gebruik van tensorflow in Windows en Linux. Zoals door anderen is opgemerkt, is het gebruik van PATH de beste keuze (d.w.z. update in .bashrc als het Linux was), maar ik heb de onderstaande code gevonden om padproblemen script voor script op te lossen.

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

zou in wezen PATH controleren op wat u zoekt en het dan toevoegen als het ontbreekt. Je hebt waarschijnlijk niet eens het ‘if’ statement nodig.
Misschien heeft niet de meest praktische manier voor mij goed gewerkt, waarbij ik weet dat het pad in kwestie misschien een ‘zelden gebruikt’ of ‘eenmalig gebruik’ PATH-add…

Dus zoals werd opgemerkt in opmerkingen hierboven (en ik denk dat je die al hebt) zoek de locatie van het bestand en voeg de locatie toe met behulp van de bovenstaande code.

Wat meer lezen erover:
https://docs.python.org/3/tutorial/modules.html
6.2 Standaardmodules


Antwoord 4, autoriteit 5%

Op mac kun je mactexinstalleren met homebrewmet het volgende: brew install --cask mactex


Antwoord 5

Als er een update beschikbaar is, probeer dan Jupyter bij te werken


Antwoord 6

Voeg "env": {"PATH":"$PATH"}toe aan uw kernel.json, voor mij was dat in /opt/anaconda3/share/jupyter/kernels/python3/kernel.json.

JupyterLab of Anaconda lijkt standaard het systeem PATH te overschrijven, als je dit instelt, zal het PATH hetzelfde zijn in JupyterLab en in je shell, dus als je iets aangepast hebt geïnstalleerd zoals xelatex, zal het verschijnen in JupyterLab.


Antwoord 7

Voer deze opdracht uit in uw jupyter-terminal (of in uw omgeving als u die heeft), sluit alle jupyter-notebooktabbladen en open deze opnieuw en converteer de notebook vervolgens naar pdf

pip install --upgrade --user nbconvert

Antwoord 8

  1. Anaconda bijwerken/opnieuw installeren indien niet bijgewerkt.
  2. installeer nu chromium via link https://chromium.woolyss.com/download/en/en maak het de standaardbrowser.
  3. Voer vervolgens jupyter notebook uit met deze browser.
  4. Gebruik ten slotte de optie “Downloaden als” in jupyter-notebook en selecteer vervolgens de optie met PDF via pyppeteer (.html)

HOLA!! Het werkte..

Other episodes