V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
main1234
V2EX  ›  Visual Studio Code

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

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

    使用 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
    chesha1
        25
    chesha1  
       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   ·   实用小工具   ·   2999 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 13:04 · PVG 21:04 · LAX 06:04 · JFK 09:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.