[ 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 패키지 관리...
- 찾아보기
- IronPython 검색
- 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. 버튼 생성 및 버튼 클릭 이벤트 생성
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());
}
}
}
}
댓글
댓글 쓰기