【问题描述】:导入了latex2mathml.converter 用于将latex转word公式,用py文件执行完全没问题,使用pyinstaller封装成exe后,出现找不到unimathsymbols.txt的问题(截图如下)
【问题分析】缺少这个文件,找到这个文件弄到本地就好啦。(但是他给的路径似乎并不存在。。)后来就去找latex2mathml这个库本地的路径,发现了这个文档,但是拷到本地还是不行,说明他调用的时候用的是绝对地址。所以要想修改这个问题就得修改它库文件的源码了。所以我就把库文件复制出来了,复制出来后,根据提示找到symbols_parser.py里的文件路径变量,改成了本地路径,ok,问题解决!
【问题解决】
1. 找到电脑本地中这个库的路径:C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Lib\site-packages\latex2mathml
将该库的整个文件夹复制出来。
2. 根据报错提示,找到打开unimathsymbols.txt的py文件
最后一次在该库文件中调用是在 symbols_parser.py的第19行(下边codecs.py是标准库,不考虑,肯定不可能在他里面)。打开文件后开始分析。
根据代码可知,他打开了一个名叫SYMBOLS_FILE的常量文件,所以去上边找SYMBOLS_FILE的定义即可。
ok,至此发现了问题所在,很可能是他在封装过程中,这里用到的是临时的绝对地址,所以封装后临时地址没了,所以报错。不过,什么问题不重要!!解决这个问题最直接暴力的办法就是 直接改成相对地址调用本地文件即可。
至此,库的问题解决了。
3. 修改自己程序的源代码,改为调用当前路径下的 修改版的latex2mathml 库。
(1)将自己程序源代码复制到 修改过的latex2mathml库 的目录下
(2)修改自己程序源代码,直接调用本地的converter.py,不再从latex2mathml包导入
4. 利用pyinstaller封装exe即可。
至此,库文件、源文件都已修改完毕,封装exe就可以用了,不再报错,问题解决!!
写在最后:
latex2mathml库可以用于将latex转换为word里的公式,相关代码主要参考了以下链接:
使用python实现的一个latex转Mathml的命令行小工具(方便latex公式放到word里使用)_xkxsxkx的博客-CSDN博客_mathml python