【问题标题】:Using gmsh API in python messes with matplotlib latex在 python 中使用 gmsh API 与 matplotlib 乳胶混淆
【发布时间】:2021-11-06 07:06:56
【问题描述】:

我已经为此苦苦挣扎了一段时间,我想我缩小了以下问题的原因:

通过 Anaconda 在 Spyder 中使用虚拟 python 3.8 环境,我能够绘制我想要的一切;使用 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}$')

附:虚拟环境是这样设置的:

为了避免由于不同的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 install --name py38 spyder -c conda-forge

conda config --add 通道 conda-forge

conda install libspatialindex==1.9.3 rtree==0.9.7

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

conda install gmsh python-gmsh

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

conda 安装 ghostscript

间谍

【问题讨论】:

  • P.S.,虚拟环境是这样设置的:

标签: python matplotlib anaconda gmsh


【解决方案1】:

我解决了!

这个问题似乎比我想象的更普遍,我在这里找到了答案: https://gitlab.onelab.info/gmsh/gmsh/-/issues/1142

事实证明 gmsh.initialize() 与 PATH 和 PYTHONPATH 环境混淆,可能会掩盖可执行文件的目录(例如 miktex)。为防止出现此问题,只需更改:

gmsh.initialize()

gmsh.initialize(['-noenv'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-02
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 2013-07-31
    相关资源
    最近更新 更多