Использование gmsh API в python беспорядок с латексом matplotlib

Я уже довольно давно борюсь с этим, и я думаю, что сузил причину следующей проблемы:

Используя виртуальную среду Python 3.8 в Spyder через Anaconda, я смог построить все, что хотел; обширные и сложные сюжеты с использованием латексного шрифта palatino. Однако, как только я ввожу в него хоть немного кода gmsh, появляются ошибки вроде «не удалось найти латекс», «отсутствует файл метрик шрифта» или «dvipng не найден». Я могу только догадываться, что gmsh испортил каталоги, но sys.path показал, что все соответствующие папки (для исполняемых файлов Miktex, dvipng) все еще там. Я новичок в python, поэтому надеюсь, что вы, ребята, заметили какую-то очень глупую или основную ошибку, которую я сделал. Заранее спасибо!

Минимальный пример, который вызывает у меня проблему:

      import gmsh, numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc
#rc('font',**{'family':'serif','serif':['Palatino']})
rc('text', usetex=True) # usetex=False resolves the issue, but I NEED this font haha

if False: # If set to True, the errors will occur.
    gmsh.initialize()
    gmsh.finalize()

Y = np.random.random(15) + 2*np.random.rand(1)
plt.plot(Y)
plt.title(r'$\Sigma_1^2 \mathrm{somehillsboye}$')

PS Виртуальная среда настроена так:

Чтобы избежать конфликтов зависимостей из-за разных версий Python, в этом проекте используется Python 3.8. Активируйте его с помощью Anaconda, выполнив следующие действия:

  1. Запустите приложение Anaconda Navigator.
  2. В этом приложении запустите командную строку CMD.exe.
  3. В этом приглашении отдельно выполните следующие строки для python 3.8 и необходимых модулей (нажимая «y» после каждой «установки или создания»):conda create --name py38 python=3.8

conda активировать py38

установка conda --name py38 spyder -c conda-forge

conda config - добавить каналы conda-forge

conda установить libspatialindex ==1.9.3 rtree == 0.9.7

conda install numpy ==1.21.2 scipy ==1.6.2 matplotlib == 3.4.2

conda установить gmsh python-gmsh

conda install -c conda-forge / label / cf202003 miktex

conda установить ghostscript

Spyder

1 ответ

Я решил это!

Проблема кажется более общей, чем я думал, и я нашел здесь ответ:https://gitlab.onelab.info/gmsh/gmsh/-/issues/1142

Оказывается, gmsh.initialize() мешает окружению PATH и PYTHONPATH, потенциально скрывая каталог исполняемых файлов (например, miktex). Чтобы предотвратить проблему, просто измените:

      gmsh.initialize()

к

      gmsh.initialize(['-noenv'])
Другие вопросы по тегам