mac 上 python 子进程中的 pdflatex

2023-12-21

我正在尝试在 Python 2.4.4 的 .tex 文件上运行 pdflatex。子进程(在 Mac 上):

import subprocess
subprocess.Popen(["pdflatex", "fullpathtotexfile"], shell=True)

这实际上什么也不做。但是,我可以在终端中运行“pdflatex fullpathtotexfile”而不会出现问题,生成 pdf。我缺少什么?

[编辑] 正如其中一个答案所建议的,我尝试过:

return_value = subprocess.call(['pdflatex', '/Users/Benjamin/Desktop/directory/ON.tex'], shell =False)

失败并显示:

Traceback (most recent call last):
  File "/Users/Benjamin/Desktop/directory/generate_tex_files_v3.py", line 285, in -toplevel-
    return_value = subprocess.call(['pdflatex', '/Users/Benjamin/Desktop/directory/ON.tex'], shell =False)
  File "/Library/Frameworks/Python.framework/Versions/2.4//lib/python2.4/subprocess.py", line 413, in call
    return Popen(*args, **kwargs).wait()
  File "/Library/Frameworks/Python.framework/Versions/2.4//lib/python2.4/subprocess.py", line 543, in __init__
    errread, errwrite)
  File "/Library/Frameworks/Python.framework/Versions/2.4//lib/python2.4/subprocess.py", line 975, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

该文件确实存在并且我可以运行pdflatex /Users/Benjamin/Desktop/directory/ON.tex在终端中。请注意, pdflatex 确实会抛出大量警告...但这并不重要,并且这也会给出相同的错误:

return_value = subprocess.call(['pdflatex', '-interaction=batchmode', '/Users/Benjamin/Desktop/directory/ON.tex'], shell =False)

使用便利功能,子流程调用 http://docs.python.org/library/subprocess.html#subprocess.call

你不需要使用Popen here, call应该足够了。

例如:

>>> import subprocess
>>> return_value = subprocess.call(['pdflatex', 'textfile'], shell=False) # shell should be set to False

如果通话成功,return_value将被设置为 0,否则为 1。

的用法Popen通常适用于您想要存储输出的情况。例如,您想使用以下命令检查内核版本uname并将其存储在某个变量中:

>>> process = subprocess.Popen(['uname', '-r'], shell=False, stdout=subprocess.PIPE)
>>> output = process.communicate()[0]
>>> output
'2.6.35-22-generic\n'

再说一遍,永远不要设置shell=True.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mac 上 python 子进程中的 pdflatex 的相关文章

随机推荐

  • 用户在权限屏幕上单击“允许”后启动活动

    我的一项活动需要位置许可 我编写了下面的代码来获得许可 但在这种情况下 如果应用程序最初没有位置权限 则用户需要单击两次才能打开活动 我可以进行一些更改 以便一旦用户在 权限 屏幕上单击 允许 只有然后意图才会触发 int PERMISSI
  • 我无法将信息从表单输入到数据库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 询问代码的问题必须对所解决的问题表现出最低限度的了解 包括尝试的解决方案 为什么它们不起作用以及预期结果 也可以看看 Stack Over
  • 如何检查 keras 训练是否已经在 GPU 中运行?

    有时我会犯一个错误 尝试在同一个 GPU 两个不同的脚本 中使用 keras 同时运行两个训练 导致我的机器崩溃或破坏两个训练 我希望能够在我的脚本中测试是否有一些训练正在运行 因此可以更改 GPU 或停止新的训练 我发现寻找答案的唯一提示
  • 无法在 vba IE 中应用正则表达式

    我使用vba结合IE编写了一个脚本来解析应用程序网页中的联系信息regex在上面 我进行了很多搜索 但找不到任何可以满足我的要求的示例 这pattern可能并不理想地找到phone号 但这里主要关心的是我如何使用pattern在 vba I
  • 在 C# 中解析原始 Protocol Buffer 字节流

    给定一个协议缓冲区编码Stream or byte 但不知道对象类型本身 我们如何打印消息的骨架 该用例用于调试基于 protobuf 的 IO 以进行根本原因分析 如果有现有的工具可以从二进制文件中解析原始 Protocol Buffer
  • 如何滚动到英国底部?

    我使用 PhoneGap 开发了一款应用程序 在我的应用程序中 我使用在列表视图中显示了许多元素ui li 这里我想滚动到列表中的最后一个元素 为此 我使用了以下代码 dates li last addClass active li foc
  • ScriptManager.RegisterClientScriptIninclude 在 UpdatePanel 中不起作用

    我已浏览网络 但尚未找到以下问题的解决方案 我有这个示例页面 ScriptManager aspx ScriptManager an UpdatePanel a MultiView有两个Views和两个LinkButtons两个视图之间切换
  • 如何在build.gradle中指定Android应用程序支持的架构?

    我的Android应用程序仅支持arm64 v8a和armeabi v7a 但是 由于依赖项之一 我在 apk 的 lib 文件夹中看到以下内容 arm64 v8a armeabi armeabi v7a mips x86 x86 64 这
  • NSURLSession用于网络图片下载+缓存

    有许多第三方库用于加载网络图像 然后将其存储到磁盘和 或内存中 然而它是好简单使用简单的 NSURLSession API 调用来实现它 这是代码 NSURLCache myCache NSURLCache alloc initWithMe
  • Haskell 中如何实现列表推导式?

    列表推导式只是一种语言功能吗 使用纯 Haskell 伪造列表理解的最简单方法是什么 你必须使用 do 块 gt gt 来做到这一点或者你可以使用其他一些 将列表理解结合在一起的方法 澄清 伪造 列表理解是指创建一个接受相同输入并产生相同输
  • 服务器日志在 POST 请求之前显示 GET 请求

    当我查看服务器日志时 我看到定期 GET 请求在来自同一 IP 具有相同引荐来源网址的 POST 请求之前立即传入 我期望的是 POST 但不是 GET 有没有人见过这个 我正在使用 javascript 在 iframe 内动态创建一个表
  • ConvertTo-Csv 输出不带引号

    我在用ConvertTo Csv获取逗号分隔的输出 get process convertto csv NoTypeInformation Delimiter 它的输出如下 NounName Name Handles VM WS 但是我想获
  • 通过赋值启动子 shell 并等待

    如何通过分配变量来启动一些子shell并等待所有完成 bin bash some code about FILE 1 cat FILE while read r HOST n HOST do echo HOST URL http HOST
  • setInterval延迟不准确

    我目前正在使用 setInterval 创建倒计时 尽管目前它的运行速度比应有的慢 根据MDN https developer mozilla org en docs Web API window setInterval 延迟参数以毫秒为单
  • 无法使用 smack 连接 XMPP 服务器:实施基于 GCM XMPP 的应用程序服务器时出现 EOF 异常

    java io EOFException no more data available expected end tag to close start tag
  • 从图像中删除白色背景并使其透明

    我们正在尝试在 Mathematica 中执行以下操作 RMagick 从图像中删除白色背景并使其透明 https stackoverflow com questions 7738437 但对于实际照片来说 它最终看起来很糟糕 就像图像周围
  • 字典迭代——对于 dict 与 dict.items()

    当我们迭代下面的字典时 每次迭代都会 正确地 返回一个键值对 for key value in dict items print s key has the value s key value some key 键有值 some value
  • SDL 中的 Blit 是什么?

    在 SDL wiki 中它说 使用此函数可以执行从源表面到目标表面的快速 blit 但这对我没有多大帮助 在这种情况下 术语 表面位块传输 是什么意思 基本上 这意味着将图像从一个表面复制到另一个表面 可能会被裁剪和移动
  • 二分查找和使用前缀树哪个查找更快?

    假设我有一个字符串列表和这些字符串的前缀树 并且我想在给定键的情况下定位一个字符串 哪个更快 二分查找还是前缀树查找 为什么以及时间复杂度是多少 Thanks 这两种技术都有其优点和缺点 后缀树 Advantages O N 构建复杂度 O
  • mac 上 python 子进程中的 pdflatex

    我正在尝试在 Python 2 4 4 的 tex 文件上运行 pdflatex 子进程 在 Mac 上 import subprocess subprocess Popen pdflatex fullpathtotexfile shell