Laravel 10调用含Matplotlib的Python脚本报RuntimeError问题解决
Laravel 10 + Symfony Process调用含Matplotlib的Python脚本报错解决
环境
- 本地服务:Laragon Full 6.0
- PHP框架:Laravel 10
- Python依赖:Matplotlib 3.8.0
- 需求:Laravel项目中调用Python脚本并在浏览器返回结果
问题
- 调用无Matplotlib的简单脚本(比如
print("Hello World"))时,shell_exec()和Symfony Process都能正常运行 - 一旦Python脚本导入Matplotlib,Symfony Process就会抛出:
RuntimeError: Could not determine home directory
- 但
shell_exec()仍能正常执行脚本
无效尝试
手动设置HOME环境变量,问题未得到解决
解决方法
在Python脚本导入Matplotlib之前,通过os.environ指定MPLCONFIGDIR为项目内的自定义目录,让Matplotlib使用该目录存储配置文件,示例代码:
import os # 替换为你项目中实际的可读写目录 os.environ['MPLCONFIGDIR'] = 'C:/laragon/www/your-project/storage/matplotlib-config' import matplotlib.pyplot as plt # 你的Matplotlib业务代码 plt.plot([1, 2, 3]) plt.savefig('output.png')
注意:要确保指定的目录存在且有读写权限,避免出现权限相关的新错误。
内容的提问来源于stack exchange,提问作者BennyVR75
相关产品推荐
相关产品推荐

