У меня есть небольшое приложение, которое загружает и устанавливает Python, а затем устанавливает список библиотек Python с помощью pip.
Я использую метод Process.WaitForExit (), чтобы убедиться, что установкаPython завершен, прежде чем я начну установку библиотек. Ниже приведен мой код для установки Python
public void installPython()
{
Process process = new Process();
process.StartInfo.FileName = @"C:\Python36\python-3.6.3-amd64.exe";
process.Start();
process.WaitForExit();
}
Ниже приведен код, который затем запускает cmd и выполняет команду pip:
public void installLibraries()
{
int exitCode;
string command = "pip install -r requirements.txt";
ProcessStartInfo processInfo;
Process process;
processInfo = new ProcessStartInfo("cmd.exe", "/c " + command);
processInfo.CreateNoWindow = true;
processInfo.UseShellExecute = false;
processInfo.RedirectStandardError = true;
processInfo.RedirectStandardOutput = true;
process = Process.Start(processInfo);
process.WaitForExit();
string error = process.StandardError.ReadToEnd();
exitCode = process.ExitCode;
Console.WriteLine("output>>" + (String.IsNullOrEmpty(output) ? "(none)" : output));
Console.WriteLine("error>>" + (String.IsNullOrEmpty(error) ? "(none)" : error));
Console.WriteLine("ExitCode: " + exitCode.ToString(), "ExecuteCommand");
process.Close();
}
Затем в методе Main я вызываю метод installPython изатем метод installLibraries
К сожалению, скомпилированный .exe не соответствует правильному порядку. Когда я запускаю команду из cmd после просмотра каталога, я получаю сообщение об ошибке:
output>>(none)
error>>'pip' is not recognized as an internal or external command,
operable program or batch file.
Ошибка в использовании функций процесса?