У меня есть очень 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
был доступен?