이 문서 내용은 좀 낡았습니다.
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 껴있는 시점부터 쌔했지만

분류 : (+)

관련 문서





(돌아가기)
(임시 저장) (임시 저장 불러오기)


(틀) (링크) (중괄호) (표) (추가)



비로그인 상태입니다. 편집 시 지금 접속한 IP가 기록됩니다.