Mac OS Sonoma系统下Matplotlib无法使用TeX的问题求助
解决方案
修复zlib版本冲突
- 检查当前zlib版本信息,确认头文件与库的版本差异:
port info zlib otool -L /opt/local/lib/libz.dylib - 卸载现有zlib并安装匹配的1.3.1版本:
sudo port uninstall zlib sudo port install zlib @1.3.1 - 重新编译Matplotlib,使其链接正确的zlib库:
pip uninstall -y matplotlib pip install matplotlib --no-binary :all:
确保Matplotlib正确读取TeX环境变量
- 验证Python进程能获取的TeX环境变量:
python3 -c "import os; print(os.environ.get('TEXMFLOCAL')); print(os.environ.get('TEXMFHOME'))" - Sonoma默认使用zsh,将环境变量写入
~/.zshrc(而非bash_profile)确保全局生效:echo 'export TEXMFLOCAL="/opt/local/share/texmf-texlive"' >> ~/.zshrc echo 'export TEXMFHOME="$HOME/Library/texmf"' >> ~/.zshrc source ~/.zshrc - 在Python代码中强制指定TeX路径,覆盖默认配置:
import matplotlib.pyplot as plt plt.rcParams['tex.texpath'] = '/opt/local/share/texmf-texlive' plt.rcParams['text.latex.preamble'] = r'\usepackage{cmss}'
重建TeX文件名数据库
- 刷新TeX的文件索引,确保dviread能检索到tfm文件:
sudo mktexlsr /opt/local/share/texmf-texlive - 验证dviread的文件识别能力:
- 生成测试用dvi文件:创建
test.tex,内容为\documentclass{article} \begin{document} Test Text \end{document} - 编译生成dvi:
latex test.tex - 用Matplotlib的dviread测试:
python3 -c "from matplotlib.dviread import Dvi; Dvi('test.dvi')"
- 生成测试用dvi文件:创建
修复MacPorts TeX Live配置
- 重新安装texlive基础包,修复迁移后的路径关联问题:
sudo port uninstall texlive-base sudo port install texlive-base - 确保MacPorts的TeX bin目录在PATH最前端,避免系统自带TeX干扰:
echo 'export PATH="/opt/local/bin:/opt/local/sbin:$PATH"' >> ~/.zshrc source ~/.zshrc
内容的提问来源于stack exchange,提问作者marie
相关产品推荐
相关产品推荐

