main1234

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

  •  
  •   main1234 · Aug 27, 2024 · 4857 views
    This topic created in 798 days ago, the information mentioned may be changed or developed.

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

    试试
    iamperiod331www
    iamperiod331www
    Aug 27, 2024
    29
    不在`"go.alternateTools"` 层级下,直接在顶层
    valord577
    valord577
    Aug 27, 2024
    30
    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
    we9ta
    Aug 28, 2024 via iPhone
    31
    {
    "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
    guanzhangzhang
    Aug 28, 2024
    32
    find /etc -type f -exec grep -l go1.19.9
    find / -type f -exec grep -l go1.19.9
    main1234
    main1234
    OP
    Aug 29, 2024
    33
    @DefoliationM 什么基本的配置??讲讲
    main1234
    main1234
    OP
    Aug 29, 2024
    34
    @we9ta 我现在也用 GVM 了,求问每次切版本时候,都要重新改下 go.gopath 和 go.goroot 么??有啥方便的办法么???另外用 GVM 怎么改 go env
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3291 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 66ms · UTC 10:40 · PVG 18:40 · LAX 02:40 · JFK 05:40
    ♥ Do have faith in what you're doing.