gopherdata / gophernotes

The Go kernel for Jupyter notebooks and nteract.
MIT License
3.86k stars 263 forks source link

Remote JupyterLab Import: "plugin was built with a different version of package golang.org/x/sync/errgroup " #223

Closed seedrick closed 1 year ago

seedrick commented 3 years ago

I'm fairly certain I just borked my environment and need help setting is straight. I'm running this as a kernel on my server in Jupyterlab. All the built-in libraries work, but other imports are throwing errors: error loading plugin "/home/XXXXX/go/src/gomacro.imports/github.com/rocketlaunchr/dataframe-go/dataframe-go.so": plugin.Open("/home/XXXXX/go/src/gomacro.imports/github.com/rocketlaunchr/dataframe-go/dataframe-go.so"): plugin was built with a different version of package golang.org/x/sync/errgroup (previous failure)

Result of go env: GO111MODULE="" GOARCH="arm" GOBIN="" GOCACHE="/home/admin/.cache/go-build" GOENV="/home/admin/.config/go/env" GOEXE="" GOFLAGS="" GOHOSTARCH="arm" GOHOSTOS="linux" GOINSECURE="" GOMODCACHE="/home/admin/go/pkg/mod" GONOPROXY="" GONOSUMDB="" GOOS="linux" GOPATH="/home/admin/go" GOPRIVATE="" GOPROXY="https://proxy.golang.org,direct" GOROOT="/usr/local/go" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/usr/local/go/pkg/tool/linux_arm" GCCGO="gccgo" GOARM="6" AR="ar" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -marm -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build950526948=/tmp/go-build -gno-record-gcc-switches" Note that admin and XXXXX are separate users.

cosmos72 commented 3 years ago

There is a known limitation when loading third-party packages and modules support is enabled (the default): each package is loaded together with is dependencies, using the versions specified in the go.mod file of the package's module.

Thus importing a package bar belonging to module modulebar may pull as dependency version x.y of a module modulefoo, and a later import of package baz belonging to module modulebaz may depend on version z of the same module modulefoo => the import fails.

The same also happens when foo is one of the packages used internally by gophernotes: attempt to import a package bar may fail because it wants a different version of foo