【问题标题】:Why doesn't pdflatex work when called as a Python subprocess?为什么 pdflatex 在作为 Python 子进程调用时不起作用?
【发布时间】:2011-08-15 15:49:53
【问题描述】:

我试图在我的 Python 脚本中实现一个函数来自动编译一个 TeX 文件。我正在尝试使用subprocess module;这就是我正在做的:

def createpdf(output):
    args = ['pdflatex', output, '-interaction=nonstopmode']

    process = subprocess.call(args,
                    stdout = subprocess.PIPE,
                    stderr = subprocess.PIPE,
                    stdin  = subprocess.PIPE)

当我在终端中使用我的 TeX 文件运行 pdflatex 时,它可以正常编译。但是当我运行我的 Python 脚本时,它不会编译。似乎编译过程开始了,但几分钟后,它无缘无故地停止了。我查看了日志文件,它没有打印任何错误消息。

【问题讨论】:

    标签: python subprocess pdflatex


    【解决方案1】:

    当您将输出管道设置为subprocess.PIPE 时,子进程会创建一个缓冲区来保存子进程的输出,直到您的进程读取它为止。如果你从未读过process.stdoutprocess.stderr,pdflatex 会填满缓冲区并阻塞。

    您需要discard their output 或直接调用subprocess.call(args) 并让它们流经您的程序输出。

    【讨论】:

    • 感谢 Jeremy...我在另一页中读到我需要这些 PIPE,但删除它们后一切正常...非常感谢!!! :)
    猜你喜欢
    • 2016-08-15
    • 2012-12-02
    • 2014-10-14
    • 2018-11-23
    • 2013-05-08
    • 2020-05-29
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    相关资源
    最近更新 更多