| 양쪽 이전 판이전 판다음 판 | 이전 판 |
| project:embeddedpythongettingstarted [2014/03/03 01:29] – [Extending] changwoo | project:embeddedpythongettingstarted [2014/10/09 21:24] (현재) – 바깥 편집 127.0.0.1 |
|---|
| ====== Embedded Python 시작하기 ====== | ====== Embedded Python 시작하기 ====== |
| | |
| ===== 소개 ===== | ===== 소개 ===== |
| 파이썬은 참 매력적인 언어입니다. 리스트, 튜플, 딕셔너리 같은 자료형들이 기본적으로 제공되고, 풍부한 라이브러리는 물론 쓰기도 편리합니다. 그리고 다른 언어와도 잘 어울립니다. 흔히 이를 일컬어 '풀 언어 (glue language)'라고 하죠. | 파이썬은 참 매력적인 언어입니다. 리스트, 튜플, 딕셔너리 같은 자료형들이 기본적으로 제공되고, 풍부한 라이브러리는 물론 쓰기도 편리합니다. 그리고 다른 언어와도 잘 어울립니다. 흔히 이를 일컬어 '풀 언어 (glue language)'라고 하죠. |
| |
| === Embedding === | === Embedding === |
| Extending의 반대입니다. 파이썬이 다른 코드에 '삽입'되었다는 뜻이며 **C/C++에서 파이썬 코드를** 쓴다는 것은 이 쪽의 예입니다. 본 문서에서는 'embedded python'을 '삽입된 파이썬'으로 번역해 쓰겠습니다. Extending은 차후에 기회가 된다면 따로 다룰 생각이며, 본 문서에서는 삽입된 파이썬에 대해서만 다룹니다. | Extending의 반대입니다. 파이썬이 다른 코드에 '삽입'되었다는 뜻이며 **C/C++에서 파이썬 코드를** 쓴다는 것은 이 쪽의 예입니다. 본 문서에서는 'embedded python'을 '삽입된 파이썬'으로, 'python embedding'은 '파이썬 삽입' 정도로 번역해 쓰겠습니다. Extending은 차후에 기회가 된다면 따로 다룰 생각이며, 본 문서에서는 삽입된 파이썬에 대해서만 다룹니다. |
| |
| 파이썬을 삽입하는 주체가 되는 언어는 C/C++로 한정하겠습니다. 사실 C 이외에 여러 다양한 언어가 파이썬과의 통합을 지원합니다. 심지어 같은 스크립트 언어인 [[http://search.cpan.org/dist/pyperl/|Perl]]과도 가능합니다. 가능한 언어의 종류는 [[https://wiki.python.org/moin/IntegratingPythonWithOtherLanguages|파이썬 위키]]를 참고하세요. | 파이썬을 삽입하는 주체가 되는 언어는 C/C++로 한정하겠습니다. 사실 C 이외에 여러 다양한 언어가 파이썬과의 통합을 지원합니다. 심지어 같은 스크립트 언어인 [[http://search.cpan.org/dist/pyperl/|Perl]]과도 가능합니다. 가능한 언어의 종류는 [[https://wiki.python.org/moin/IntegratingPythonWithOtherLanguages|파이썬 위키]]를 참고하세요. |
| 비주얼 스튜디오에서 빌드하려면 따로 include path, library path를 프로젝트 설정에서 지정해 주어야 합니다. [[http://msdn.microsoft.com/en-us/library/a4xbdz1e%28v=vs.90%29.aspx|Property sheet]]를 사용하는 것이 편리하겠죠. | 비주얼 스튜디오에서 빌드하려면 따로 include path, library path를 프로젝트 설정에서 지정해 주어야 합니다. [[http://msdn.microsoft.com/en-us/library/a4xbdz1e%28v=vs.90%29.aspx|Property sheet]]를 사용하는 것이 편리하겠죠. |
| |
| 불행히도, 또는 일반적으로도 그렇듯이 유닉스 계열에 비해 윈도우 쪽이 빌드할 때 훨씬 까다롭습니다. 일단 윈도우에서는 이후 설명할 ''python-config-X.Y''를 사용할 수가 없습니다. 파이썬 자체에서 제공하는 [[http://docs.python.org/2.7/library/sysconfig.html|sysconfig 모듈]]을 이용하는 방법도 있으나 이마저도 빌드에 필요한 모든 정보가 제공되지는 않습니다. 대체로 ''.lib'' 파일은 ''C:\Python27\libs''에 설치됩니다. | 불행히도, 또는 일반적으로도 그렇듯이 유닉스 계열에 비해 윈도우 쪽이 빌드할 때 훨씬 불편합니다. 일단 윈도우에서는 이후 설명할 ''python-config-X.Y''를 사용할 수가 없습니다. 파이썬 자체에서 제공하는 [[http://docs.python.org/2.7/library/sysconfig.html|sysconfig 모듈]]을 이용하는 방법도 있으나 이마저도 빌드에 필요한 모든 정보가 제공되지는 않습니다. 대체로 ''.lib'' 파일은 ''C:\Python27\libs''에 설치됩니다. |
| | |
| | 또한 디버그 버전 빌드 때에는 링킹 단계에서 ''python27_d.lib'' 파일을 찾을 수 없다는 메시지까지 나옵니다. 파이썬 공식 홈페이지에서 받은 인스톨러 패키지에는 디버그 버전의 라이브러리가 빠져 있기 때문입니다. ''python27_d.lib'' 파일을 온전히 생성하려면 파이썬 소스를 받아다 직접 컴파일해야 합니다. |
| |
| 또한 디버그 버전 빌드 때에는 링킹 단계에서 ''python27_d.lib'' 파일을 찾을 수 없다는 메시지까지 나옵니다. ''python27_d.lib'' 파일을 온전히 생성하려면 파이썬 소스를 받아다 직접 컴파일하는 방법 밖에는 없습니다. 파이썬 소스를 보고 싶으시다면 모를까, 상당히 번거로우니 그다지 권장하지 않습니다. 그냥 ''python27.lib'' 파일을 복사하여 ''python27_d.lib'' 파일을 만드는 편법을 쓰는 것도 나쁘지 않습니다. 만일 이 lib 파일이 static library라면 이대로 실행하는 데 문제가 없습니다만, 혹시나 dynamic library인지 확인해 보세요. 만약 그렇다면 ''C:\Python27\DLLs''도 환경변수를 등록해야 할 겁니다. | 참고로 파이썬은 bzip, Berkely DB, OpenSSL, SQLite, Tcl/Tk에 의존성이 있고, 또 의존성 패키지들은 Perl과 NASM 등을 필요로 합니다. 윈도우에 패키지 관리자가 있었으면 참 좋겠는데 하는 생각이 들죠. 아무튼 비주얼 스튜디오를 이용하는 경우 직접 파이썬을 빌드하지 않는 한 좀 아쉽더라도 릴리즈 모드를 이용해야 할 겁니다. |
| |
| MinGW를 이용한다면 ''-I'' 옵션과 ''-L'' 옵션, 그리고 ''-lpython27'' 옵션까지 다 집어 넣으면 되겠습니다. 인스톨러에 ''libpython27.a''가 같이 제공됩니다. | MinGW를 이용한다면 ''-I'' 옵션과 ''-L'' 옵션, 그리고 ''-lpython27'' 옵션까지 다 집어 넣으면 되겠습니다. 인스톨러에 ''libpython27.a''가 같이 제공됩니다. |