[ Python ] Visual Studio 2017 C# Python 실행 - IronPython

[ Python ] Visual Studio 2017 C# Python 실행 - IronPython



1. Visual Studio 2017 실행




2. Visual Studio 2017 새 프로젝트 

    - Visual C#
    - Windows Forms 앱(.NET Framework)
    - 이름 & 위치 
    - 확인



3. NuGet 패키지 관리 실행

    - 도구
    - NuGet 패키지 관리자
    - 솔루션용 NuGet 패키지 관리...



4. IronPython 설치

    - 찾아보기
    - IronPython 검색
    - IronPython 선택
    - 현재 프로젝트 선택
    - 설치



5. IronPython 설치 확인

    - 솔루션 탐색기
    - IronPython 설치 확인



6. Python 파일 만들기

    - 탐색기
    - 프로젝트 경로 > bin > Debug
    - Test.py 파일 만들기



7. Python 코드 작성

    def getPythonTest():
        return "Hello Python"        



8. Form1 코드 작성

using System;
using System.Windows.Forms;

using IronPython.Hosting;
using Microsoft.Scripting.Hosting;

namespace PythonTest
{
    public partial class Form1 : Form
    {
        public ScriptEngine _scriptEngine = null;
        public ScriptScope _scriptScope = null;
        public ScriptSource _scriptSource = null;

        public Form1()
        {
            InitializeComponent();

            _scriptEngine = Python.CreateEngine();
            _scriptScope = _scriptEngine.CreateScope();

            string szCurrentPath = Environment.CurrentDirectory;
            _scriptSource = _scriptEngine.CreateScriptSourceFromFile(szCurrentPath + "\\Test.py");

            _scriptSource.Execute(_scriptScope);
        }
    }
}
 


9. 버튼 생성 및 버튼 클릭 이벤트 생성




10. 버튼 클릭 이벤트 코드 작성

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                dynamic dmTemp;

                dmTemp = _scriptScope.GetVariable<Func<string>>("getPythonTest");
                MessageBox.Show(dmTemp());
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }



11. 버튼 클릭 및 메시지 박스 확인




12. Full Code

using System;
using System.Windows.Forms;

using IronPython.Hosting;
using Microsoft.Scripting.Hosting;

namespace PythonTest
{
    public partial class Form1 : Form
    {
        public ScriptEngine _scriptEngine = null;
        public ScriptScope _scriptScope = null;
        public ScriptSource _scriptSource = null;

        public Form1()
        {
            InitializeComponent();

            _scriptEngine = Python.CreateEngine();
            _scriptScope = _scriptEngine.CreateScope();

            string szCurrentPath = Environment.CurrentDirectory;
            _scriptSource = _scriptEngine.CreateScriptSourceFromFile(szCurrentPath + "\\Test.py");

            _scriptSource.Execute(_scriptScope);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                dynamic dmTemp;

                dmTemp = _scriptScope.GetVariable<Func<string>>("getPythonTest");
                MessageBox.Show(dmTemp());
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }
    }
}


댓글