簡體   English   中英

Go 在 go/src 中找不到 go/pkg 中的包

[英]Go cannot find packages in go/pkg looking in go/src

嘗試使用 GoLang 和 MQTT 但 go 似乎無法找到這些包。

% go version
go version go1.16.7 darwin/amd64

foob​​ar.go

package main

import (
    "fmt"
    "log"
    "os/exec"
    "time"
    mqtt "github.com/eclipse/paho.mqtt.golang"
)

嘗試運行時,我會收到以下錯誤

go run foobar.go
foobar.go:9:2: no required module provides package github.com/eclipse/paho.mqtt.golang: go.mod file not found in current directory or any parent directory; see 'go help modules'
% go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/{user}/Library/Caches/go-build"
GOENV="/Users/{user}/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/{user}/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/{user}/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="go1.16.7"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
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 -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/rg/80kn_qfn0_91cv0_fb43_m5r0000gn/T/go-build2547135435=/tmp/go-build -gno-record-gcc-switches -fno-common"

我設置 $GOPATH 和 $GOROOT 以匹配 go env。 我什至嘗試通過設置 GO111MODULE="off" 回到舊的路徑方法,但這導致了這個錯誤

% go run foobar.go
foobar.go:8:2: cannot find package "github.com/eclipse/paho.mqtt.golang" in any of:
    /usr/local/go/src/github.com/eclipse/paho.mqtt.golang (from $GOROOT)
    /Users/{user}/go/src/github.com/eclipse/paho.mqtt.golang (from $GOPATH)

我很困惑,因為go get/install github.com/eclipse/paho.mqtt.golang似乎正在安裝我的軟件包在 go/pkg/ 下,而上面的輸出和我閱讀的所有文檔都表示 /src 所以為什么我有 /pkg 目錄。

請使用模塊。 您不應該設置GOROOTGOPATH

我建議通過以下路徑,使用官方文檔頁面:

  1. 閱讀有關為您的平台正確安裝 Go 的信息
  2. 閱讀入門教程,該教程還告訴您如何安裝 3rd-party 軟件包並在您的代碼中使用它們。

完成這些步驟應該不會超過 20 分鍾,並且幾乎可以肯定,您將能夠在該過程結束時實現您的目標。 作為獎勵,請繼續閱讀第一頁以外的入門指南,了解如何創建自己的 Go 模塊、從其他模塊使用它們、編寫測試、將代碼build為二進制文件等等。

恕我直言,這是嘗試編寫 Go 程序所需的最少背景; 如果不經過這些步驟,您將缺乏關鍵的基本理解,甚至很難理解 SO 答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM