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

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



1. Visual Studio 2017 실행




2. 신규 프로젝트 생성




3. NuGet 패키지 관리자 실행

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



4. pythonnet 설치

    - 찾아보기
    - pythonnet
    - pythonnet_netstandard_py38_win (windows python 버전 3.8 용)
    - 프로젝트
    - 설치



5. python.Runtime 설치 확인




6. 프로젝트 속성

    - 솔루션 탐색기
    - 프로젝트 [우 클릭]
    - 속성



7. 빌드 속성 변경

    - 빌드
    - Debug 플랫폼 대상 x64 [변경]
    - Release 플랫폼 대상 x64 [변경]
    - 저장



8. python 설치 위치 찾기




9. python code 작성

    - 경로 기억



10. C# code 작성



using System;
using System.Windows.Forms;

using Python.Runtime;

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

            // python path 위치
            string szPythonPath = "C:\\Programs\\Python\\Python38";

            Environment.SetEnvironmentVariable("PYTHONHOME", szPythonPath);
            Environment.SetEnvironmentVariable("PYTHONPATH", $"{szPythonPath}\\Lib;" + 
                                                //python 실행 파일 위치
                                                "E:\\");

            // python 엔진 초기화
            PythonEngine.Initialize();

            using (Py.GIL())
            {
                dynamic dymTemp = Py.Import("pytest");
                Console.WriteLine(dymTemp.Mypython());
            }
        }
    }
}


11. 실행 결과




12. String python 작성

    - 프린트는 보기 힘드나 작동은 한다...

using (Py.GIL())
{
    // String 식으로 python 식을 작성, 실행
    PythonEngine.RunSimpleString(@"
                                print('hello 2');
                                ");
}


13. 멀티 스레드 작성시

    - 생성 후 소멸 잊지 말기

PythonEngine.Initialize();
IntPtr _dynPyThread = PythonEngine.BeginAllowThreads();

using (Py.GIL())
{
    // 코드 작성
}

PythonEngine.EndAllowThreads( _dynPyThread );
PythonEngine.Shutdown();

댓글