pyinstaller .exe работает локально, но не работает при вызове C #? - PullRequest
0 голосов
/ 13 января 2019

Я создал скрипт с использованием Python2.7 и скомпилировал его с помощью pyinstaller в исполняемый файл с тем же именем, в этом случае «GeneralStats.py» превращается в «GeneralStats.exe» с использованием аргументов --onefile и -w.

При вызове с C # я использую:

var pythonDirectory = (Directory.GetCurrentDirectory());
var filePathExe1 = Path.Combine(pythonDirectory + "\\Python\\GeneralStats.exe");
Process.Start(filePathExe1);

При вызове вне C #, поэтому в моих локальных файлах я могу запустить .exe, и в результате получается текстовый файл с большим количеством значений (работает правильно).

Однако при запуске с C # в этом формате я получаю сообщение об ошибке «GeneralStats вернул -1!»

С которыми у меня были проблемы раньше, но это была простая ошибка Python, что когда я возвращался к своему коду и запускал его, я получал ошибку, которую пропустил. На этот раз мой код Python не возвращает ошибок и работает за пределами C #.

Есть идеи, почему это может быть? Я могу предоставить любой код или каталоги файлов, просто спросите, не считаете ли вы, что это поможет отладке.

EDIT:

Решено удалением:

var filePathExe1 = Path.Combine(pythonDirectory + "\\Python\\GeneralStats.exe");
Process.Start(filePathExe1);

И заменить на:

ProcessStartInfo _processStartInfo = new ProcessStartInfo();
_processStartInfo.WorkingDirectory = Path.Combine(pythonDirectory + "\\Python");
_processStartInfo.FileName = @"GeneralStats.exe";
_processStartInfo.CreateNoWindow = true;
Process myProcess = Process.Start(_processStartInfo);

1 Ответ

0 голосов
/ 13 января 2019

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

Смотрите, например, это :

Используйте свойство ProcessStartInfo.WorkingDirectory, чтобы установить его до начала процесса. Если свойство не установлено, рабочим каталогом по умолчанию является %SYSTEMROOT%\system32.

Укажите путь, по которому GeneralStats.exe.

...