반응형

* C# IronPython 설치 및 파이썬(Python) 함수들 불러 오기 예제...

 

Main

- 사용한 컨트롤 : Button 1개, TextBox 1개

- 개발 환경 : Visual Studio 2019 윈도우 10 64 bit 및 아나콘다3, Python3.7 파이참 설치 되어 있는 상황

                 아나콘다가 설치 되어 있어서 따로 설치를 하지는 않았음.

 

* IronPython 설치

메뉴에서 도구 -> Nuget 패키지 관리자 -> 패키지 관리자 콘솔 로 들어 갑니다.

 

그럼 위 그림 처럼 아래 하단에 패키지 관리자 콘솔 창이 나오게 되면 install-Package IronPython -Version 2.7.9 를 입력

해 줍니다. 그럼 그림처럼 패키지 설치를 하게 되는데

여기서 닷넷 프레임 워크는 저는 4.7 이상으로 했습니다. 테스트 해 본 결과

닷넷 프레임 워크가 2,3 은 아예 설치가 되질 않습니다. 

 

위 설치가 다 되면 오른쪽 솔루션 탐색기 -> 참조에 IronPython, IronPython.Modules, ~ 및 Microsoft.Scripting, Microsoft.Scripting.Metadata DLL 들이 자동으로 참조 추가 됨.

설치가 끝나게 되고 자동 으로 DLL 들이 참조가 되면 이제부터 아래와 같이 Python 예제 파일을 하나 만듭니다.

 

메모장을 열어 위 그림과 같이 코딩 후 저장 할 때 txt 파일이 아닌 모든 파일로 선택 후 test.py 확장자를 py 로 저장 합니다. 파일 위치는 쉽게 D: 나 C: 에 옮겨 놓습니다. 불러오기 편한 곳으로 옮겨 놓습니다.

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using IronPython.Hosting;

namespace CSharp_IronPythonTest
{
    public partial class Form1 : Form
    {
        
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //파이썬 엔진 실행...
            var peEngine = Python.CreateEngine();
            var vScope = peEngine.CreateScope();

            try
            {
                //파이썬 파일 연결
                var vSource = peEngine.CreateScriptSourceFromFile("D:\\test.py");
                vSource.Execute(vScope);

                //파이썬 소스 코드 안 함수들 불러오기...
                var getReturnValue = vScope.GetVariable<Func<string>>("testPythonFunc");
                textBox1.Text = getReturnValue() + System.Environment .NewLine ;

                var vSum = vScope.GetVariable<Func<int, int, int>>("testsum");
                textBox1.Text += vSum(5, 8).ToString();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }


        }
    }
}

* 예제 결과

 

 

 

반응형

+ Recent posts