Python.Net

사이트 내 전체검색

로그인
회원가입
잡담게시판

Python.Net 4

페이지 정보

View8,728  | 작성일2021.01.14 18:02

본문

https://github.com/pythonnet/pythonnet 

 

파이썬 코드를 실행할 수 있도록 도와주는 프로젝트(라이브러리) 입니다.

경우에 따라 꽤 잘 써먹을 수도 있을거 같아요.

 

아래는 간단히 특정 폴더에 있는 파이썬 파일들 가져다 선택해서 실행할 수 있도록 만들어본 툴입니다.

 

c6018db40a7a8bcefcd028b30d7a7c6c_1610614946_5227.PNG


c6018db40a7a8bcefcd028b30d7a7c6c_1610614946_5584.PNG
 

표준 출력은..

 

private void RunCode(object sender, RoutedEventArgs e)

{

    try

    {

        var name = System.IO.Path.GetFileNameWithoutExtension(CurrentCode.fi.Name);

 

        StdoutPrinter printer = new StdoutPrinter();

 

        using (Py.GIL())

        {

            dynamic sys = Py.Import("sys");

            sys.stdout = printer;

            sys.stderr = printer;

 

            PythonEngine.RunSimpleString(CurrentCode?.code ?? "");

 

            outputBox.Text = printer.Output;

        }

    }

    catch (Exception ex)

    {

        outputBox.Text = ex.Message;

    }

}

이런식으로 해서 TextBlock 에 뿌려주게 하면 파이썬 코드에서 나오는 출력 결과나 에러 출력도 확인 가능하네요.

 

 

 

댓글목록

파이썬은 이런거 때문에 많이들 사용하는거 같군요~
파이썬 공부를 하긴 해야하는데.. 시간이 갈수록 배울게 늘기만 하는군요 ㅜㅜ

안녕하세요.

PythonEngine.RunSimpleString 으로 코드 조각을 실행 하고 출력 되는 내용을 표준 출력 스트림으로 받아 보는 형태로 기억합니다.
python 코드에서 결과를 json 형식으로 출력 하고 이것을 C# 코드에서 표준 출력 스트림을 읽어 들여서 처리하는 식으로 가능하겠죠.
하지만 이럴 바에는 name pipe 를 열거나 gRPC 나 message broker 를 통해서 통신하는 편이 나을 테고,

pythonnet 사용은 pythonnet 의 예제 코드에 나온 것 처럼
                    dynamic np = Py.Import("numpy");
                    Console.WriteLine(np.cos(np.pi * 2));
파이썬 코드에 대응되는 코드를 작성 하셔서 진행하시는 것이 맞다고 생각됩니다.

제 개인적인 의견으로는 pythonnet 사용 보다는 gRPC 를 사용하는 편이 좋겠네요.

잡담게시판 목록

게시물 검색

Copyright © LittleCandle All rights reserved.
문의메일 : littlecandle99@gmail.com
PC 버전으로 보기