【问题标题】:'pdflatex' not found in subprocess within a bundled PyInstaller APP在捆绑的 PyInstaller APP 的子进程中找不到 \'pdflatex\'
【发布时间】:2022-10-18 15:42:34
【问题描述】:

我正在尝试使用PyInstallerPyQt5 GUI 创建一个 macOS 独立应用程序。除了使用pdflatex 模块(与Pylatex 结合使用)从TEX 文件自动生成PDF 之外,所有这些都可以工作。

pylatexpdflatex 模块都需要调用subprocess 模块,具体操作如下:

fp = subprocess.run(args, input=self.latex, env=env, timeout=15, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

在哪里args=['pdflatex', '-output-directory=/Users/Desktop', '-interaction-mode=batchmode', '-jobname=test']

但是,这在捆绑的应用程序中不起作用,因为它因我正在记录到文件的以下错误而崩溃:

[Errno 2] No such file or directory: 'pdflatex' 

显然,pdflatex 可执行文件未包含在捆绑包中。在终端中运行 which pdflatex 会输出以下目录:/Library/TeX/texbin/pdflatex 所以我尝试使用以下 PyInstaller 命令添加路径:

pyinstaller --noconsole --onefile --path "/Library/TeX/texbin" main.py

但是应用程序在运行时仍然找不到pdflatex 可执行文件,而终端可执行文件可以正常工作。我已经在网上用尽了所有类似的帖子并且没有东西可以尝试,所以我希望有人可以指导我找到解决方案。

相关资料:

  • macOS 版本:10.13.6 High Sierra
  • Python:3.8
  • PyInstaller:5.1

【问题讨论】:

  • 你找到解决办法了吗?我也有同样的问题
  • 我也有同样的问题,有解决办法吗?

标签: python subprocess latex pyinstaller pdflatex


【解决方案1】:

我遇到了同样的问题,我只是通过编辑 PyInstaller 生成的运行时环境来解决它。在我的情况下,找不到npm 命令,在终端中运行which npm 后,我可以看到npm 位于/usr/local/bin,这是macOS 上PyInstaller 不包含的路径。

所以我的解决方案是在应用程序启动时运行它:

local_bin = '/usr/local/bin'
if local_bin not in os.environ["PATH"]:
   os.environ["PATH"] += os.pathsep + local_bin

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    相关资源
    最近更新 更多