User-8621695 Ответов: 2

Как вызвать Python EXE из консольного приложения C#


Я создал один Python exe, который считывает данные из Config.Json. Теперь я хочу вызвать этот exe-файл из консольного приложения C#, но получаю сообщение об ошибке
<pre>Traceback (most recent call last):
  File "file.py", line 552, in <module>
  File "file.py", line 12, in read_JSON
FileNotFoundError: [Errno 2] No such file or directory: 'config.json'
[456] Failed to execute script filePathExe

Я пытаюсь пробежаться по нижеприведенному коду:
string appArgs = @"D:\appFolder\config.json";
string appPath = @"D:\appFolder\filePathExe.exe";
Process proc = new Process();
ProcessStartInfo si = new ProcessStartInfo(appPath, appArgs);
si.WindowStyle = ProcessWindowStyle.Normal;
si.Verb = "runas";             // UAC elevation required.
si.UseShellExecute = true;     // Required for UAC elevation.
proc.StartInfo = si;
proc.Start();
proc.WaitForExit();

Может кто-нибудь помочь, пожалуйста, как я могу это запустить?

Что я уже пробовал:

Я приложил код, выше которого я использую.

Sandeep Mewara

Вы уверены, что где бы вы ни запускали программу/exe, файл присутствует в ожидаемом месте?
FileNotFoundError: [Errno 2] нет такого файла или каталога: 'config.json'

User-8621695

да, оба файла находятся в одном месте. Кроме того, exe работает нормально, когда я пытаюсь запустить его индивидуально, но не работает из консольного приложения C#.

Garth J Lancaster

Это немного странно ... попробуйте добавить Скрыть   скопировать кодСкрыть   скопировать код

si.WorkingDirectory = @"D:\appFolder";
т.е. Скрыть   скопировать кодСкрыть   скопировать код
si.WindowStyle = ProcessWindowStyle.Normal;si.WorkingDirectory = @"D:\appFolder";
si.Verb = "runas";             // UAC elevation required.


Было бы также хорошо проверить код python, который заставил exe дважды проверить, что он использует thr полный путь и т. д. к конфигурационному файлу

ZurdoDev

Пожалуйста, опубликуйте в качестве решения.

Garth J Lancaster

готово, ОП все равно отправил сообщение

ZurdoDev

Они сделали это сразу после того, как я предложил тебе сделать это. :)

User-8621695

Спасибо @Garth, это сработало для меня :)

2 Ответов

Рейтинг:
6

User-8621695

Как @Garth предложил выше добавить рабочий каталог,я добавил это, и это сработало для меня. так что код есть:

string appArgs = @"D:\appFolder\config.json";
string appPath = @"D:\appFolder\filePathExe.exe";
Process proc = new Process();
ProcessStartInfo si = new ProcessStartInfo(appPath, appArgs);
si.WindowStyle = ProcessWindowStyle.Normal;
si.WorkingDirectory = @"D:\appFolder";
si.Verb = "runas";             // UAC elevation required.
si.UseShellExecute = true;     // Required for UAC elevation.
proc.StartInfo = si;
proc.Start();
proc.WaitForExit();

Спасибо,


Рейтинг:
16

Garth J Lancaster

Как и предлагал Зурдодев, хотя ОП уже опубликовал мой комментарий ....

Это немного странно ... попробуйте добавить

si.WorkingDirectory = @"D:\appFolder";
создание кода

si.WindowStyle = ProcessWindowStyle.Normal;
si.WorkingDirectory = @"D:\appFolder";
si.Verb = "runas";             // UAC elevation required.