C++빌더 VCL 애플리케이션에서 Python4Delphi 활용하기

C++ 개발자들 중에 파이썬을 사용하는 분들이 있습니다. 두 언어를 통합하는 방법에는 여러가지가 있습니다. 한 가지는 새로운 객체 유형과 기능을 구현하는 C++ 함수가 포함되어 있는 파이썬(Python) 확장 모듈을 만드는 것입니다. 또 다른 방법은 Boost Python C++ 라이브러리를 사용해 파이썬과 C++ 언어 간의 상호 운용성을 지원하는 것입니다. 세 번째로 C++빌더와 파이썬을 통합하기 위해 컴포넌트들의 생산성, 복원력, 캡슐화를 활용하는 것입니다. 이번 글에서는 VCL 애플리케이션에서 Python4Delphi 오픈 소스 구성 요소를 활용하는 방법에 대해서 설명해보려고 합니다.

Python4Delphi 란?

Python for Delphi (P4D)는 무료 컴포넌트 셋으로 (MIT 오픈 소스 라이선스), PyScripter Python IDE를 개발한 Kiriakos Vlahos가 만들었습니다. 이 컴포넌트를 사용해 델파이와 C++빌더 애플리케이션을 확장해서 파이썬 스크립트를 실행하고, 새로운 파이썬 모듈과 파이썬 유형을 만들 수 있습니다. 파이썬 확장을 DLL 등으로 만들수도 있습니다. 더 자세한 내용은 www.devgear.co.kr/archives/3660 에서 확인할 수 있습니다.

윈도우용 파이썬 설치하기 (32비트와 64비트)

C++빌더 VCL용 애플리케이션에서 Python4Delphi를 사용하기 전에, PC에 Win32, Win64용 파이썬이 설치되어 있는지 확인하세요.

Python.org 웹사이트를 통해서 파이썬을 다운로드 받아 설치할 수 있습니다. Win32, Win64용 설치 파일은 다음 링크를 활용하세요: www.python.org/downloads/windows/

PC에 설치되어 있는 파이썬 배포 파일은 윈도우 커맨드 창에서 “where python.exe”를 사용해서 확인할 수 있습니다.

기본적으로 Win32용 파이썬은 다음 경로에 설치됩니다: C:\Users\(사용자 이름)\AppData\Local\Programs\Python\Python39-32\folder (또는 설치 시 지정한 경로)

Win64용 파이썬의 기본 설치 경로는 다음과 같습니다: C:\Users\(사용자 이름)\AppData\Local\Programs\Python\Python39\folder (또는 설치 시 지정한 경로)

Python4Delphi 설치와 컴포넌트들 활용하기

C++빌더 10.3.3, 10.4, 10.4.1버전에서 Python4Delphi를 사용하는 방법에 대해서 차근차근 설명해보려고 합니다. 이 글에서는 RAD스튜디오(델파이와 C++빌더가 모두 포함된 제품)를 사용했습니다.

Step 1 – Python4Delphi 최신 버전 다운로드

python4delphi-master.zip 파일을 다운로드 받아(github.com/pyscripter/python4delphi) 하드 드라이브에서 압축을 풀어놓으세요 (데이비드 아이는 다음 경로의 파일을 이용했습니다: C:\Users\david\Documents\Embarcadero\Studio\Projects/ folder)

Step 2 – IDE에서 Python_D 패키지 프로젝트 파일 열기

C++빌더 10.4.1에서 Python_D.dproj 패키지 프로젝트 파일을 열어보세요 (“python4delphi-master\Packages\Delphi\Delphi 10.4+” 경로의 폴더에서 찾으실 수 있을 거에요).

Step 3 – DesignIDE 유닛과 $IFDEF 추가하기

Python_D.dpk 소스 파일을 열어보면 DesignIDE 유닛에 $IFDEF가 없는 걸 확인하실 수 있을텐데요. Win64 C++ 컴파일러를 사용할 때 컴파일 에러가 발생하지 않도록 하기 위해서는 꼭 추가해주어야 합니다.

델파이 컴파일러 명령어인 LIB suffix는 “AUTO”로 설정되어 있는지 확인하세요. 다른 컴파일된 패키지 파일들을 패키지 파일 접미사와 일치시키고 싶다면 소스 코드 또는 Project | Options | Description 메뉴 (아래 이미지 참고)에서 설정할 수 있습니다. 접미사는 파일 확장자 앞에 적용됩니다. 드롭다운 목록에서 $(Auto) 옵션을 선택하는 방법도 있습니다.

10.3 또는 그 이전 버전의 경우 다음 경로에서 별도의 Python_D.dpk 패키지 소스 파일을 사용하면 됩니다: python4dlephi-master\Packges\Delphi\Delphi 10.3-
이 패키지 소스 파일에는 $IFDEF 가 있어 최신 델파이 컴파일러에 대한 LIB suffix를 설정할 수 있습니다.

이전 Python_D.dpk 프로젝트를 사용하는 경우, 패키지 원본 파일 앞에 있는 {$R*.res} 문을 주석 처리하거나 삭제해야 할 수도 있습니다 (Python4Delphi 최신 커밋된 버전에서는 삭제되어있을 수도 있습니다).

Step 4 (a) – RAD스튜디오에 Python4Delphi 컴포넌트 설치하고 빌드하기

사용할 개발도구가 RAD스튜디오인지 C++빌더인지에 따라 컴포넌트 설치 및 빌드 방법이 두 가지가 있습니다. C++빌더를 사용한다면 “Step 4 (b)”는 건너뛰어도 됩니다.

Python4Delphi 프로젝트 옵션 설정이 필요한데요. Delphi Compiler | C/C++ Output file generation 메뉴로 들어가서 Win32와 Win64 플랫폼에 대한 설정을 해주면 됩니다. (all configurations – debug and release 를 선택하세요). 이제 Win32와 Win64용 Python4Delphi 컴포넌트들을 설치하고 빌드합니다.

컴포넌트 빌드 & 설치가 완료되면 C++ VCL Win32와 Win64 프로젝트들에 맞게 생성된 C++ 헤더 파일, 패키지 임포트 라이브러리 파일, 패키지 정적 라이브러리 파일들을 확인할 수 있습니다.

Help 파일에서: “Generate all C++Builder files (including package libs)” 옵션을 선택하세요. 그러면 모든 델파이 관련 패키지들이 생성됩니다 – C++ 프로젝트에 대한 필요한 모든 헤더 파일 (.hpp), 패키지 임포트 라이브러리 파일 (.bpi), 패키지 정적 라이브러리 파일 (.lib와 .a)들. 이는 데스크탑 플랫폼의 기본입니다.

델파이 컴파일러 검색 경로(Delphi Compiler Search Path)에 Python4Delphi 소스 디렉토리를 포함하도록 설정하세요. 이제 컴파일러가 필요한 파일들을 찾을 수 있습니다.

Step 4 (b) – 델파이 커맨드 라인 컴파일러를 사용해 컴포넌트 설치&빌드하기

Win32 (DCC32.exe)와 Win64 (DCC64.exe)용 델파이 커맨드 라인 컴파일러를 실행할 배치 파일(또는 다른 스크립트 파일들)을 활용할 수 있습니다. 이러한 델파이 컴파일러들(bin 폴더에 포함되어 있음)은 Python4Delphi 패키지 파일을 빌드하고, C++ 애플리케이션에서 사용할 때 필요한 C++ 헤더 파일, 컴파일된 패키지 파일, 정적 라이브러리, 기타 파일들을 생성할 수 있습니다.

CompilePython4DelphiPackage4Win32.bat

CompilePython4DelphiPackage4Win64.bat

Python4Delphi 패키지 설치

C++빌더 IDE에서 Components | Install Packages 메뉴 아이템을 선택 후 “Add…” 버튼을 클릭하세요.

다음 경로 C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl 폴더 (폴더 경로 중간의 숫자는 C++빌더 버전에 따라서 다를 수 있습니다)로 들어가서 Design time package (BPL) 파일을 선택한 후 Open 버튼을 클릭하세요. 그러면 IDE에 패키지와 컴포넌트들이 추가됩니다. Design time package 리스트에서 “Components for Python”이 표시됩니다. 패키지의 컴포넌트 리스트를 표시해 줄 컴포넌트(Components) 버튼을 클릭하세요.

Step 4 (c) – C++에서 사용 가능한 Python4Delphi 파일들이 생성되었는지 확인하기

Win32와 Win64 대상 플랫폼용 Python4Delphi 패키지 프로젝트를 컴파일하면 다음의 파일들이 생성됩니다:

IDE의 컴포넌트 팔레트(Component Palette) 화면에 컴포넌트들이 뜨는 걸 확인할 수 있을 것입니다:

C++빌더 Python4Delphi VCL 애플리케이션을 만들어볼까요?

RAD스튜디오에서 Python4Delphi Demo1 델파이 프로젝트 파일을 열고 컴포넌트들이 정상적으로 전부 뜨는지, 파이썬이 작동하는지를 테스트합니다.
경로: C:\User\david\Documents\Embarcadero\Studio\Projects\Python4Dlephi\python4delphi-master\Demos\Demo01

File | New | C++Builder VCL application 경로에서 C++빌더 프로젝트를 만들어보겠습니다 (Note: 프로젝트에 대한 소스 코드는 참조(Reference) 섹션에 나열되어 있는 압축(zip) 파일에 있습니다). Demo01 폼 파일의 델파이 버전에서 모든 컴포넌트들을 복사했습니다.

Demo01Unit.dfm 파일

Demo01Unit.h 파일

3개의 버튼에 OnClick 이벤트 핸드러를 추가해보겠습니다.

Demo01Unit.cpp 파일

폴더에 프로젝트를 저장합니다.

C++ VCL Demo 프로그램 실행 & 컴파일과 파이썬 코드 활용하기

폼에는 두 개의 TMemo 컴포넌트가 있습니다. 아래쪽 TMemo에는 파이썬 코드를 입력합니다. 저는 두 숫자의 합, 파이썬 수학 라이브러리에서 파이 값, 파이썬 플랫폼 라이브러리에서 파이썬 버전 값을 출력해보는 예제를 써보았습니다. Load and Save script 버튼을 이용해서 파이썬 스크립트 파일을 대화 상자에 불러오고 저장합니다. Execute script 버튼을 클릭하면 위쪽의 TMemo에 결과값이 나타납니다.

참고 자료들

Python4Delphi와 PyScripter

Python4Delphi on GitHub by Kiriakos Vlahos – https://github.com/pyscripter/python4delphi

[다시보기 PART 1] 델파이 개발자를 위한 파이썬 – https://devgear.co.kr/archives/3664

[다시보기] C++빌더 개발자를 위한 파이썬 – https://blogs.embarcadero.com/using-python4delphi-with-cbuilder-vcl-applications/

PyScripter on GitHub by Kiriakos Vlahos – https://github.com/pyscripter/pyscripter

Python for Windows

Python Releases for Windows (python.org) – https://www.python.org/downloads/windows/

엠바카데로 DocWiki

Creating Packages and DLLs – http://docwiki.embarcadero.com/RADStudio/en/Creating_Packages_and_DLLs

Project | Options | Output – C/C++ – http://docwiki.embarcadero.com/RADStudio/en/Output_-_C/C%2B%2B

Project | Options | Description – http://docwiki.embarcadero.com/RADStudio/en/Descripti

Package Files Created by Compiling – http://docwiki.embarcadero.com/RADStudio/en/Package_Files_Created_by_Compiling

DCC32.EXE, the Delphi Command Line Compiler – http://docwiki.embarcadero.com/RADStudio/en/DCC32.EXE,_the_Delphi_Command_Line_Compiler

DCC64.EXE, the Delphi 64-bit Command Line Compiler – http://docwiki.embarcadero.com/RADStudio/en/DCC64.EXE,_the_Delphi_64-bit_Command_Line_Compiler

Delphi 32-bit compiler (DCC32.exe) cmd line help (C++Builder 커뮤니티 에디션 10.3.3 버전)

Delphi 64-bit compiler (DCC64.exe) cmd line help (C++Builder 커뮤니티 에디션 10.3.3 버전)

C++ Demo project와 Delphi command line package build batch files (zip file)

zip 파일은 여기를 통해 다운로드 받을 수 있습니다: http://davidi.com/code/Python4DelphiDemo01.zip

AI api C++ cpp database Delphi DelphiCon Firedac fmx getit IDE ideas interbase ios migration modernization news RAD스튜디오 tips UI UIUX vcl 개발 개발사례 개발팁 겟잇 기술레터 기술백서 데이터 데이터베이스 델파이 마이그레이션 모바일 보안 새기능 스타일 윈도우 윈도우10 인공지능 인터베이스 출시 파이어몽키 프로젝트 현대화