Я пытаюсь запустить сценарий python из консольного приложения c#. Этот код c# работает нормально, пока я не импортирую наш пользовательский модуль python, который, в свою очередь, импортирует другие модули, например arcpy, keyring и т.д. c внутри сценария python. Скрипт отлично работает из строки cmd, но однажды в c# он просто зависает. В итоге выскакивает системная ошибка взаимоблокировки. Как заставить мой python работать? Цель - получить пароль от python до c#. Я открыт для других подходов ...
c#
private static string getPassword(string database)
{
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = @"C:\Python27\ArcGIS10.6\python.exe";
string script = @"C:\src\xxxx\etw_password.py";
start.Arguments = $"\"{script}\" \"{database}\"";
start.UseShellExecute = false;
start.CreateNoWindow = false;
start.RedirectStandardOutput = true;
start.RedirectStandardError = true;
string errors;
string password;
Console.WriteLine(start.Arguments);
using(Process process = Process.Start(start))
{
errors = process.StandardError.ReadToEnd();
password = process.StandardOutput.ReadToEnd();
}
return password;
}
python: не работает - я заменил наши пользовательские вызовы безопасности python на «x»
import sys
import xxxx
database = sys.argv[1]
password = xxxx.xxxx(database, 'xxxx')
print password
python: отлично работает
import sys
database = sys.argv[1]
print database
Я также провожу тест ниже, чтобы проверить, был ли это только наш модуль или проблема распространилась на другие. Я тестировал с numpy и arcpy. Оба вышли из строя.
python: не работает
import sys
import numpy
database = sys.argv[1]
print database