Как запустить exe-файл в обработке? - PullRequest
0 голосов
/ 05 мая 2020

Я создал файл python под названием таблица лидеров и превратил его в файл .exe с помощью pyinstaller. Этот файл .exe находится в папке с именем dist, которая находится внутри папки данных для моего эскиза. Сначала я попытался запустить файл с помощью функции launch (), и хотя это не дало мне никаких ошибок, он не выполнил файл.

launch("data/dist/leaderboard.exe");

Для моей следующей попытки я попытался использовать функцию exe c вместо этого.

exec("data/dist/leaderboard.exe");

Это дало мне код ошибки: Исключение при попытке data / dist / leaderboard.exe

Затем я решил использовать полный путь к файлу при использовании функции запуска.

launch("C:/Users/Tahseen/Documents/cs corsework 2/Bloodlust/data/dist/leaderboard.exe");

Это вызвало повторяющиеся всплывающие окна с заголовком «Обнаружена фатальная ошибка» и заголовком «Невозможно выполнить таблицу лидеров скрипта». Использование exe c () тоже дало мне этот результат.

После исследования я нашел одно решение, которое работает для нескольких людей, - использовать двойной \ вместо одиночного /, однако это ничего не дало мне .

Я подтвердил, что файл выполняется правильно при открытии вручную из папки, поэтому я думаю, что проблема находится где-то в моем коде.

ОБНОВЛЕНИЕ: я думаю, что в первых двух случаях таблица лидеров файлов .exe не удалось найти, однако я не знаю, почему, когда я помещаю случайную строку в скобки, происходит то же самое. Это привело меня ко второму вопросу: есть ли способ выполнить файл из папки проекта, то есть без полного пути к файлу?

1 Ответ

0 голосов
/ 06 мая 2020

Благодаря @George Profenza я понял, что проблема в том, что файл python требует для запуска внешних текстовых файлов. Хотя я не мог придумать способ указать, какой каталог использовать для процесса, я понял, что вместо использования текстовых файлов для отправки данных между обработкой и python я мог бы использовать клиент и сервер. Я создал сервер в проекте обработки и клиента в файле python, импортировав processing. net и сокет. Что касается запуска exe-файла без ручного ввода полного пути к файлу, я использовал dataPath (""), чтобы вернуть путь к папке данных, а затем добавил "/dist/leaderboard.exe" в результирующую строку. Таким образом, при экспорте приложения программа должна работать.

String path = dataPath("");
launch(path+"/dist/leaderboard.exe");
...