Windows环境下在Python中调用pdflatex编译.tex文件失败的问题排查与解决
Python调用pdflatex返回代码1且无PDF生成的问题解决
问题场景
我在Windows系统中尝试用Python脚本调用pdflatex编译.tex文件时遇到了奇怪的问题:
- 直接在命令行执行
pdflatex filename.tex,能正常编译生成PDF文件 - 但在Python里用
os.system("pdflatex filename.tex")调用时,控制台只输出返回码1,完全没有编译动作,也没有生成PDF - 我试过传入文件的完整路径,问题依旧
- 换成
subprocess.call(['pdflatex', 'filename.tex'])调用,同样返回1,没有任何效果 - 之前看到有Mac用户在讨论帖里遇到过相同问题,但没找到解决方案
问题根源
后来我才发现,问题根本不在Python本身,而是出在我运行Python脚本的环境上:我一直是通过RStudio的reticulate包来执行脚本的——不管是用reticulate::source_python(filename)调用,还是在reticulate的REPL里逐行执行代码,都会触发这个调用失败的情况。
解决方案
找到原因后,解决起来就很简单了:
- 直接在系统命令行(比如Windows的CMD或PowerShell)中运行你的Python脚本,执行
python your_script.py即可正常调用pdflatex完成编译 - 或者利用RStudio自带的终端窗口,在终端里直接运行Python脚本,也能绕开reticulate的环境限制,顺利完成编译
内容的提问来源于stack exchange,提问作者Alira
相关产品推荐
相关产品推荐

