Python.Included를 활용한 C#에서 Python 소스 코드 사용

Python으로 작성된 소스 코드를 C#에서 활용하기 위해 몇가지를 살펴보고 있습니다.
그러던 와중에 Python.Included라는 오픈 소스를 발견하여 가벼운 사용 사례를 공유합니다.

C# 코드레벨에서 Python 코드를 사용하는 방법에는 몇가지가 있습니다.

  • Process로써 Call
    (단순히 일반 프로세스로써 콜 하는 방법이기에 설명을 생략하겠습니다.)

  • IronPython
    Python의 .NET 구현체 입니다. C#과 가장 결합도가 좋지만 현재 Python2 에 대한 지원만이 정식 릴리즈 되었고, Python3에 대한 구현체는 Beta로 공개되었습니다. 그런데 이도 Python3.4에 대한 구현체이기에 최신 Python 버전 사용에 제한이 있습니다.

  • PythonNet
    CPython을 그대로 사용하지만 CLR과의 통합을 이뤄냈습니다. 이로써 Python3의 최신 언어 버전도 사용을 할 수 있지만 호스팅 환경에 CPython을 선행적으로 설치해야합니다.

  • Python.Included
    PythonNet을 그대로 사용하지만 CPython에 대한 설치까지 관여하기에 CPython에 대한 선행 설치 없이 Nuget 을 통한 참조만으로 바로 사용이 가능합니다. 그러나 Initialize할때 CPython을 Curl을 통해 다운로드 받는 형식이라 Offline 환경에서 최초 사용은 불가능합니다.

위에 열거된 항목들에서 Python.Included를 활용해 봅시다.

  1. Nuget을 통해 Python.Included를 설치.
  2. Getting Started 에서 소개된 코드 복붙.
  3. 실행 ㄱㄱ싱

위 그림에서 확인되는 대로 매우 손쉽게 Python 코드와의 호환을 얻어 낼 수 있습니다.

Python.Included는 단순히 CPython에 대한 설치만을 관여하기에, 이후 Python 소스 코드에 대한 사용은
Pythonnet을 통해 수행하시면 됩니다.


Python.Included 는 아직 검증되지 않은 성숙도를 가지고 있습니다. 사용에 주의하시기 바랍니다.
현재 Python3.7만을 지원하고 Windows에서만 테스트해봤다고 합니다.
또한 AMD64 대상만 가능합니다.
아주 가벼운 오픈 소스라고 보시면 될 것 같습니다.

Pythonnet을 사용할 때 CPython에 대한 구비를 Developer-centric으로써 관리하고 싶다면 Python.Included는 고려해 볼만 한 도구입니다.

내부 소스 코드가 단순해서 코드 공헌에 어려움이 없는 놈 같습니다. 저도 Python의 다른 버전을 지원할 수 있도록 공헌해볼까 합니다.

좋아요 8