快疯了,使用 vscode 开发 go,环境变量问题,这个问题一直困扰好久 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
main1234
V2EX    Visual Studio Code

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

  •  
  •   main1234 2024-08-27 15:20:26 +08:00 3661 次点击
    这是一个创建于 410 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用 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 读的哪里的环境变量

    34 条回复    2024-08-29 13:31:17 +08:00
    main1234
        1
    main1234  
    OP
       2024-08-27 15:22:27 +08:00
    ```
    2024-08-27 15:19:02.940 [info] Installing github.com/cweill/gotests/[email protected] FAILED
    2024-08-27 15:19:02.940 [info] {
    "code": 2,
    "killed": false,
    "signal": null,
    "cmd": "/Users/zhuxiaoyu/Desktop/go121/bin/go install -v github.com/cweill/gotests/[email protected]",
    "stdout": "",
    "stderr": "go: downloading github.com/cweill/gotests v1.6.0\ngo: cannot find GOROOT directory: /Users/zhuxiaoyu/Desktop/gopath/go1.19.9\n"
    }
    ```
    zand1984
        2
    zand1984  
       2024-08-27 15:26:20 +08:00
    echo $PATH 看看呢?
    另外推荐 brew 来安装 go ,gvm 来切换 go 版本。没有切换版本需求就不装 gvm ,只用 brew 更新到 latest
    zysuper
        3
    zysuper  
       2024-08-27 15:29:42 +08:00
    billbur
        4
    billbur  
       2024-08-27 15:30:01 +08:00
    你如果是用 vscode 运行,可以检查一下右下角显示的版本是否对的
    main1234
        5
    main1234  
    OP
       2024-08-27 15:33:00 +08:00
    @billbur 版本是对的,1.21
    main1234
        6
    main1234  
    OP
       2024-08-27 15:37:45 +08:00
    @zysuper 我不用 1.19 了,不需要安装 19
    zysuper
        7
    zysuper  
       2024-08-27 15:44:05 +08:00
    @main1234 不是你用不用 1.19, 而是你的 vscode 用到的 gotests 找不到 go1.19.9, 所以报错了。
    billbur
        8
    billbur  
       2024-08-27 15:53:34 +08:00
    @main1234 #5 go clean 清一下缓存呢,实在不行都重装吧
    deplives
        9
    deplives  
       2024-08-27 15:55:46 +08:00
    我不用 Windows ,不会解决
    但是感叹一句,Windows 对开发人员其实真的不友好。
    之前写 Python ,连个 pyenv 都不支持。整个虚拟环境整了几天。真是麻了
    main1234
        10
    main1234  
    OP
       2024-08-27 16:02:04 +08:00 via Android
    @deplives 你怎么看出来我用的是 Windows ??
    main1234
        11
    main1234  
    OP
       2024-08-27 16:02:34 +08:00 via Android
    @billbur 破 vscode ,用公司电脑也有这个问题,不知道哪里错了,换 goland 了
    proxytoworld
        12
    proxytoworld  
       2024-08-27 16:12:32 +08:00
    @deplives darwin 不是经典的 mac
    proxytoworld
        13
    proxytoworld  
       2024-08-27 16:14:43 +08:00
    第一确认终端的 go 版本是否正确,第二在 vscode 终端看 go env ,第三或许可以用 strace...
    proxytoworld
        14
    proxytoworld  
       2024-08-27 16:15:22 +08:00
    再不济 soft link 过去
    main1234
        15
    main1234  
    OP
       2024-08-27 16:28:56 +08:00 via Android
    @proxytoworld 换 goland 了,vscode 报错的命令我在 cmd 中运行正常
    listenerri
        16
    listenerri  
       2024-08-27 17:04:46 +08:00
    看一下 ~/.bashrc ?
    main1234
        17
    main1234  
    OP
       2024-08-27 17:17:48 +08:00 via Android
    @listenerri 里面没东西
    Nazz
        18
    Nazz  
       2024-08-27 17:37:18 +08:00
    配置 GOROOT, GOPATH, GOPROXY 就行了, 其它都是多余的
    mrtanwen
        19
    mrtanwen  
       2024-08-27 17:57:52 +08:00
    SiDQ9w1P04Dap9uv
        20
    SiDQ9w1P04Dap9uv  
       2024-08-27 17:59:32 +08:00
    goland 不香吗?
    deplives
        21
    deplives  
       2024-08-27 18:10:47 +08:00
    @mrtanwen 不支持虚拟环境有啥用
    aw2350
        22
    aw2350  
       2024-08-27 18:11:32 +08:00
    看下工作目录下的 goenv ,环境变量 从小到大,先取的 项目配置,再取项目目录的 env ,然后才向上取全局变量等。先在 项目目录下 打印 一下 gopath 和 goroot 的 env 变量值
    DefoliationM
        23
    DefoliationM  
       2024-08-27 18:12:00 +08:00 via Android
    一顿操作猛如虎,然后连基本的配置都分不清。
    mrtanwen
        24
    mrtanwen  
       2024-08-27 18:14:53 +08:00
    FlashEcho
        25
    FlashEcho  
       2024-08-27 18:28:04 +08:00
    我也遇到过类似问题,不然别用本机环境变量了,直接写.vscode/launch.json 吧,这里的环境变量 100%能解决问题
    pkoukk
        26
    pkoukk  
       2024-08-27 18:30:50 +08:00
    go 可以向下兼容,你的电脑上没必要保留两个版本的 go
    所以直接在官网下安装包无脑安装就行了,手动安装纯属给自己找麻烦
    https://go.dev/doc/install
    FengMubai
        27
    FengMubai  
       2024-08-27 18:32:06 +08:00
    建议使用包管理器安装, 非常不建议把软件装在桌面
    iamperiod331www
        28
    iamperiod331www  
       2024-08-27 19:02:53 +08:00
    "go.goroot": "/home/xxx/.deck/2.0/go-1.19.6",
    "go.gopath": "/home/xxx/gopath",

    试试
    iamperiod331www
        29
    iamperiod331www  
       2024-08-27 19:03:45 +08:00
    不在`"go.alternateTools"` 层级下,直接在顶层
    valord577
        30
    valord577  
       2024-08-27 19:12:26 +08:00
    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
        31
    we9ta  
       2024-08-28 03:21:10 +08:00 via iPhone
    {
    "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
        32
    guanzhangzhang  
       2024-08-28 08:34:15 +08:00
    find /etc -type f -exec grep -l go1.19.9
    find / -type f -exec grep -l go1.19.9
    main1234
        33
    main1234  
    OP
       2024-08-29 13:30:13 +08:00
    @DefoliationM 什么基本的配置??讲讲
    main1234
        34
    main1234  
    OP
       2024-08-29 13:31:17 +08:00
    @we9ta 我现在也用 GVM 了,求问每次切版本时候,都要重新改下 go.gopath 和 go.goroot 么??有啥方便的办法么???另外用 GVM 怎么改 go env
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1558 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 16:33 PVG 00:33 LAX 09:33 JFK 12:33
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86