使用Pyinstaller后无法用我的脚本运行子进程吗?

问题描述 投票:0回答:1

我非常simple_script.py使用subprocess.run执行这种“外部”命令utility.exe "input_file" -o "output_file"在用Pyinstaller编译到单个文件中之前,我的脚本运行良好。顺便说一句,我正在使用以下命令将simple_script.py转换为simple_script.exe

pyinstaller --onefile --add-binary "utility.exe;." simple_script.py

我的脚本看起来像这样:

import subprocess, os

print(os.listdir())
cls = 'utility "input_file " -o "output_file"'
command_execution = subprocess.run(cls, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

print(command_execution)

如您所见,要成功运行simple_script.py,我必须拥有simple_script.py本身,utility.exe和要处理的文件。但是,当我在带有输入文件的目录中运行脚本的单文件版本(包括utility.exe)时,将得到两个字符串输出:

  1. ['input_file', 'simple_script.exe'] # cause print(os.listdir()) command execution
  2. CompletedProcess(args='utility.exe "input_file.txt" -o "output_file.txt"', returncode=1, stdout=b'', stderr=b"'utility.exe' is not recognized as an internal or external command,\r\noperable program or batch file.\r\n")

据我了解,utility.exe未被提取,因此无法达到并执行。所以,问题是-我在做什么错?也许我需要一些使utility.exe文件可访问的功能?

python subprocess pyinstaller
1个回答
1
投票
def resource_path(relative): if hasattr(sys, '_MEIPASS'): return os.path.join(sys._MEIPASS, relative) else: return os.path.join(os.path.abspath("."), relative)
© www.soinside.com 2019 - 2024. All rights reserved.