Итак, я пытаюсь запустить скрипт python из моего приложения .NET Core.
Когда вызывается метод, включающий функции и классы, включенные в библиотеку IronPython, он выдает мне следующее сообщение об ошибке:
Не удалось загрузить файл или сборку 'IronPython, версия = 2.7.9.0, культура = нейтральная, PublicKeyToken = 7f709c5b713576e1'. Операция не является законной в текущем состоянии. (Исключение из HRESULT: 0x80131509)
Я установил библиотеку IRON Python для .NET с помощью диспетчера пакетов Nuget. Кроме того, текущая версия python, установленная в моей системе, 3.7.3
Уже пытались понизить версию python с 3.7.3 до 2.7
Попытка явно зарегистрировать .dll для IronPython с помощью regsvr32.exe
public async Task<string> FunctionHandler(S3Event evnt, ILambdaContext
context)
{
var s3Event = evnt.Records?[0].S3;
if(s3Event == null)
{
return null;
}
try
{
var response = await this.S3Client.GetObjectMetadataAsync(s3Event.Bucket.Name, s3Event.Object.Key);
string recording_key = "some value";
string DownloadURL = await this.GenerateTranscript(recording_key);
TranscriptionJob tj = JsonConvert.DeserializeObject<TranscriptionJob>(DownloadURL);
File.WriteAllText(@"D:/Audio/NewFileLocation.txt", tj.Transcript.TranscriptFileUri);
return response.Headers.ContentType;
}
catch(Exception e)
{
context.Logger.LogLine($"Error getting object {s3Event.Object.Key} from bucket {s3Event.Bucket.Name}. Make sure they exist and your bucket is in the same region as this function.");
context.Logger.LogLine(e.Message);
context.Logger.LogLine(e.StackTrace);
throw;
}
}
public async Task<string> GenerateTranscript(string testUrl)
{
var Engine = Python.CreateEngine();
var script = @"~/TranscriptGenerate/PythonTranscript.py";
var source = Engine.CreateScriptSourceFromFile(script);
Engine.GetSysModule().SetVariable("objurl", testUrl);
var result = Engine.Runtime.IO;
var errors = new MemoryStream();
result.SetErrorOutput(errors, Encoding.Default);
var results = new MemoryStream();
result.SetOutput(results, Encoding.Default);
var scope = Engine.CreateScope();
await source.Execute(scope);
//source.Execute(scope);
string str(byte[] x) => Encoding.Default.GetString(x);
string response_from_script = str(results.ToArray());
return response_from_script;
}
Ожидаемый результат: моя консоль должна перейти к методу GenerateTranscript без каких-либо исключений при отладке в VS2019.
Фактический результат: при достижении вызова метода GenerateTranscript из метода FunctionHandler я обнаружил следующую ошибку.
Любая помощь в этом случае будет приветствоваться. Заранее спасибо