이 문서 내용은 좀 낡았습니다.
60일이나 편집 안된 오래된 망한 문서니 개발 문서인 경우 참고할 때 조심하세요. 최신 정보를 알고 싶으면 게시판에 글 써주세요

결론 : 멸망
목차

1. 개요
2. CGO를 이용하자
3. 빌드해서 exec로 돌리자
3.1. 심각한 문제가 생겼다
3.2. 해결했다

1. 개요

새롭게 정해진 차기 개발 언어인 Go를 파이썬과 연동해보는 뻘짓

2. CGO를 이용하자

결론 : 대실패

리눅스 버전에 따라서 C가 호환성을 탄다. 우분투 22.04에서 빌드했더니 윈도우에선 실행조차 안되고 우분투 20.04에서는 오류 뜬다.

3. 빌드해서 exec로 돌리자

연구중

완료했다 linux amd64 arm64, windows amd64 arm64를 지원한다 여기에서 경험해볼 수 있다.

앞으로 이 방식을 주로 쓸 것 같다.

리턴은 string (리턴이 한 개) 혹은 json으로 받아서 처리할 것 같다

이는 1단계 방식이고 추후 2단계에서는 아예 golang용 포트를 따로 받아서 내부 API로 통신하는 구조로 변경 계획도 있다.

또한 2~3단계에서 jinja 파트도 아예 golang에서 처리하게 할 계획도 있다.

3.1. 심각한 문제가 생겼다

크로스 컴파일에서 오류가 난다

정확히는 그냥 쓰는 건 문제가 없는데 라이브러리 불러오는 순간 오류가 난다...

Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub

라고 떠서(1) CGO_ENABLED=1로 두고 실행했더니 위의 문제가 재발했다...

아... 아무래도 다시 생각해야할 시점이 온 것 같다

걍 numba나 도입해야 하나... 이래서 JVM 언어 쓰는거구나

사실 파이썬 실행할 때 유저 컴터에서 컴파일하게 하면 해결되는 문제이긴 한데...

그럼 설치 과정이 더 늘어나는 거니 영 좋지 못할 것 같다 (호환성 문제도 있고 파이썬애니웨어에서 돌아갈지도 모르겠고)

아 아니다 좋은 생각이 났다 그냥 순수 Go로 짜인 라이브러리를 쓰면 될 것 같다

3.2. 해결했다

순수 Go로 짜인 라이브러리 올리고 CGO_ENABLED=0으로 설정하니 말끔하게 해결되었다

휴... 대기획 프로젝트 초장부터 박살날 뻔 했다
(1) 이미 CGO 껴있는 시점부터 쌔했지만