在捆绑的 PyInstaller 应用程序内的子进程中找不到"pdflatex"



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

pylatexpdflatex模块都需要调用子进程模块,其操作如下:

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 version: 10.13.6 High Sierra
  • Python: 3.8
  • PyInstaller: 5.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

最新更新