我非常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
)时,将得到两个字符串输出:
['input_file', 'simple_script.exe'] # cause print(os.listdir()) command execution
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
文件可访问的功能?def resource_path(relative):
if hasattr(sys, '_MEIPASS'):
return os.path.join(sys._MEIPASS, relative)
else:
return os.path.join(os.path.abspath("."), relative)