Невозможно загрузить сборку IronPython при запуске консольного приложения .NETCore2.1 на VS2019 - PullRequest
0 голосов
/ 12 июня 2019

Итак, я пытаюсь запустить скрипт python из моего приложения .NET Core.

Когда вызывается метод, включающий функции и классы, включенные в библиотеку IronPython, он выдает мне следующее сообщение об ошибке:

Не удалось загрузить файл или сборку 'IronPython, версия = 2.7.9.0, культура = нейтральная, PublicKeyToken = 7f709c5b713576e1'. Операция не является законной в текущем состоянии. (Исключение из HRESULT: 0x80131509)

  1. Я установил библиотеку IRON Python для .NET с помощью диспетчера пакетов Nuget. Кроме того, текущая версия python, установленная в моей системе, 3.7.3

  2. Уже пытались понизить версию python с 3.7.3 до 2.7

  3. Попытка явно зарегистрировать .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 я обнаружил следующую ошибку.

Любая помощь в этом случае будет приветствоваться. Заранее спасибо

...