快疯了,使用 vscode 开发 go,环境变量问题,这个问题一直困扰好久

74 天前
 main1234

使用 go1.21 开发,之前电脑有 1.19 版本

1.21 版本安装到了/Users/zhuxiaoyu/Desktop/go121 目录中

/etc/profile

# System-wide .profile for sh(1)

if [ -x /usr/libexec/path_helper ]; then
        eval `/usr/libexec/path_helper -s`
fi

if [ "${BASH-no}" != "no" ]; then
        [ -r /etc/bashrc ] && . /etc/bashrc
fi
export GOROOT=/Users/zhuxiaoyu/Desktop/go121
export GOPATH=/Users/zhuxiaoyu/Desktop/gopath

~/.bash_profile

export GOROOT=/Users/zhuxiaoyu/Desktop/go121
export GOPATH=/Users/zhuxiaoyu/Desktop/gopath
export GOBIN=$GOPATH/bin
export PROTOBUF_HOME=/usr/local/protobuf
export GO111MODULE=auto
PATH=$PATH:$GOBIN:$PROTOBUF_HOME/bin

~/.zshrc

export GOPATH=/Users/zhuxiaoyu/Desktop/gopath
export GOROOT=/Users/zhuxiaoyu/Desktop/go121
export GOBIN=$GOPATH/bin
export PROTOBUF_HOME=/usr/local/protobuf
export GO111MODULE=on
export GETHBIN=/Users/zhuxiaoyu/Desktop/geth/build/bin

go env

GO111MODULE='auto'
GOARCH='amd64'
GOBIN='/Users/zhuxiaoyu/Desktop/gopath/bin'
GOCACHE='/Users/zhuxiaoyu/Library/Caches/go-build'
GOENV='/Users/zhuxiaoyu/Library/Application Support/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='darwin'
GOINSECURE=''
GOMODCACHE='/Users/zhuxiaoyu/Desktop/gopath/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='darwin'
GOPATH='/Users/zhuxiaoyu/Desktop/gopath'
GOPRIVATE=''
GOPROXY='https://goproxy.cn,direct'
GOROOT='/Users/zhuxiaoyu/Desktop/go121'
GOSUMDB=''
GOTMPDIR=''
GOTOOLCHAIN=''
GOTOOLDIR='/Users/zhuxiaoyu/Desktop/go121/pkg/tool/darwin_amd64'
GOVCS=''
GOVERSION='go1.21.0'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='clang'
CXX='clang++'
CGO_ENABLED='1'
GOMOD=''
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/ys/nth2j_v53q55rqfkhvdfnj_80000gn/T/go-build2234700829=/tmp/go-build -gno-record-gcc-switches -fno-common

vscode 的配置

"go.alternateTools": {
        "go.goroot":"/Users/zhuxiaoyu/Desktop/go121",
        "go.gopath":"/Users/zhuxiaoyu/Desktop/gopath"
    }

vscode 报错提示

go: cannot find GOROOT directory: /Users/zhuxiaoyu/Desktop/gopath/go1.19.9

都快疯了,到底这个 vscode 读的哪里的环境变量

2707 次点击
所在节点    Visual Studio Code
34 条回复
deplives
74 天前
@mrtanwen 不支持虚拟环境有啥用
aw2350
74 天前
看下工作目录下的 goenv ,环境变量 从小到大,先取的 项目配置,再取项目目录的 env ,然后才向上取全局变量等。先在 项目目录下 打印 一下 gopath 和 goroot 的 env 变量值
DefoliationM
74 天前
一顿操作猛如虎,然后连基本的配置都分不清。
mrtanwen
74 天前
chesha1
74 天前
我也遇到过类似问题,不然别用本机环境变量了,直接写.vscode/launch.json 吧,这里的环境变量 100%能解决问题
pkoukk
74 天前
go 可以向下兼容,你的电脑上没必要保留两个版本的 go
所以直接在官网下安装包无脑安装就行了,手动安装纯属给自己找麻烦
https://go.dev/doc/install
FengMubai
74 天前
建议使用包管理器安装, 非常不建议把软件装在桌面
iamperiod331www
74 天前
"go.goroot": "/home/xxx/.deck/2.0/go-1.19.6",
"go.gopath": "/home/xxx/gopath",

试试
iamperiod331www
74 天前
不在`"go.alternateTools"` 层级下,直接在顶层
valord577
74 天前
vscode+go 环境 在 zsh 和 bash 配置中 不用单独 export GOPATH GOROOT 这些的

只需要 export PATH=/opt/go/bin:$PATH 其他环境变量通过 go env -w ${key}=${value}

vscode 也不需要设置 go.alternateTools

还有一种可能性就是 环境变了需要重新 source 一下 mac 建议重启或者 logout 一下 防止有缓存
we9ta
73 天前
{
"go.gopath": "${env:HOME}/.gvm/pkgsets/go1.22.5/global",
"go.goroot": "${env:HOME}/.gvm/gos/go1.22.5",
"cSpell.words": ["gorm", "milli"],
"editor.formatOnSave": true,
"go.formatTool": "gofmt",
"[go]": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
}
},
"[go.mod]": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
}
}
}



Gvm 嘎嘎好用
guanzhangzhang
73 天前
find /etc -type f -exec grep -l go1.19.9
find / -type f -exec grep -l go1.19.9
main1234
72 天前
@DefoliationM 什么基本的配置??讲讲
main1234
72 天前
@we9ta 我现在也用 GVM 了,求问每次切版本时候,都要重新改下 go.gopath 和 go.goroot 么??有啥方便的办法么???另外用 GVM 怎么改 go env

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1068170

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX