如何在macOS系统中搭配使用Pillow与MATLAB Runtime?
解决macOS下MATLAB Runtime与Pillow冲突的报错问题
看起来你在配置MATLAB Runtime后,运行Pillow相关代码时碰了壁——这大概率是因为你设置的DYLD_LIBRARY_PATH环境变量干扰了Python加载Pillow依赖的系统原生库。下面是具体的问题分析和解决办法:
问题根源
当你把DYLD_LIBRARY_PATH指向MATLAB Runtime的库目录时,系统会优先加载MATLAB提供的库文件,但这些库和Pillow需要的libjpeg、libpng等系统库版本可能不兼容,最终导致导入PIL模块时触发加载错误。
实用解决方案
方案1:临时设置环境变量,仅给MATLAB程序用
别全局设置DYLD_LIBRARY_PATH,只在需要运行MATLAB相关程序时临时配置:
- 打开终端,先执行设置命令,再启动你的MATLAB Runtime程序:
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/Applications/MATLAB_R2017b.app/runtime/maci64:/Applications/MATLAB_R2017b.app/sys/os/maci64:/Applications/MATLAB_R2017b.app/bin/maci64 # 这里替换成你要运行的MATLAB Runtime程序路径 - 运行Python/Pillow代码时,直接用未设置该环境变量的终端,彻底避免冲突。
方案2:用虚拟环境隔离Pillow的运行环境
创建独立的Python虚拟环境,让Pillow加载原生系统库,不受MATLAB库影响:
- 创建并激活虚拟环境:
python3 -m venv pillow-env source pillow-env/bin/activate - 在虚拟环境里重新安装Pillow:
pip install Pillow - 再运行你的代码:
from PIL import Image, ImageTk print('Hello World')
方案3:给MATLAB程序单独写启动脚本(进阶)
如果必须同时跑MATLAB Runtime和Pillow,可以给MATLA程序写个专属启动脚本,让它只在自身进程里加载MATLAB库:
- 新建一个脚本文件(比如
run_matlab_app.sh):#!/bin/bash export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/Applications/MATLAB_R2017b.app/runtime/maci64:/Applications/MATLAB_R2017b.app/sys/os/maci64:/Applications/MATLAB_R2017b.app/bin/maci64 # 替换成你的MATLAB Runtime应用路径 /path/to/your/matlab/application - 给脚本加执行权限:
chmod +x run_matlab_app.sh - 用这个脚本启动MATLAB程序,Python代码在普通终端正常运行就行。
快速验证步骤
- 先在终端里检查当前环境变量状态:
如果看到MATLAB的路径,要么重启终端,要么执行echo $DYLD_LIBRARY_PATHunset DYLD_LIBRARY_PATH清除该变量。 - 重新运行你的Pillow代码,看看是不是能正常执行了。
内容的提问来源于stack exchange,提问作者johnthagen
相关产品推荐
相关产品推荐

