1. 程式人生 > >關於python呼叫golang的庫

關於python呼叫golang的庫

由於最近py在機器學習上比較牛x,但golang居然沒有相應牛x的機器學習庫。本人雖然這兩種語言都熟悉,但就是不爽py的一些語法,所以打算使用golang做一部分庫,然後py呼叫。。。網上有很多py呼叫golang的方法,基本原理都是cgo來弄,如下面:

https://studygolang.com/articles/4796

然而,本人是在osx下的,上面這東西估計只能Linux了。在osx下,py直接報錯。結果,折騰了好幾天,然後發現據說,cgo在osx下有點bug,編譯出來的東西會有問題。所以,如果用osx的同學,請用下面命令來編譯py呼叫的so庫:

go build -ldflags=-s -buildmode=c-shared -o xxx.so xxx.go

xxx.so就是編譯的靜態庫,xxx.go就是go的原始碼了。上面命令關鍵地方(對於osx來說)就是 -ldflags=-s,必須要加這個,否則不管是編譯靜態庫,還是可執行檔案,都必定會崩。。。。 -buildmode=c-shared就是讓go編譯so了。

以上。。。。。(還有一個py回撥go的問題,正在研究中。。。網上雖有教程,但說不明白,還得研究一下。。。。)