go - 在项目目录中找不到包
问题描述
在过去的两个小时里,我一直在尝试解决这个问题。对于我的生活,我无法理解开发 Go 的人如何在语言方面做得如此出色,但在包管理方面却做得如此糟糕。
这是我的go env
输出:
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/<me>/Library/Caches/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/<me>/Documents/Proj/go"
GORACE=""
GOROOT="/usr/local/opt/go/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/opt/go/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/z4/b3lxy_51405_b8pb_680l4xh0000gn/T/go-build063693521=/tmp/go-build -gno-record-gcc-switches -fno-common"
请注意,我的GOPATH
和GOROOT
已设置。
这是我的 go 工作区 ( /Users/<me>/Documents/Proj/go
) 的结构:
go/
|-bin/
|-pkg/
|-src/
|--github.com/
|--user/
|--myproject/
|--client/
|--client.go
|--main.go
这是我的client.go
文件:
// client.go
package client
type MyClient struct {}
这是我的main.go
文件:
// main.go
package main
import "client"
func main() {}
当我go build
在项目根目录中运行时,出现此错误:
main.go:4:2: cannot find package "client" in any of:
/usr/local/opt/go/libexec/src/transport (from $GOROOT)
/Users/<me>/Documents/Proj/go/src/transport (from $GOPATH)
第一次发生这种情况时,我试图更正上面的路径:
// main.go
package main
import "github.com/user/myproject/client"
func main() {}
然后我得到了这个错误:
main.go:4:2: cannot find package "client" in any of:
/usr/local/opt/go/libexec/src/transport (from $GOROOT)
/Users/<me>/Documents/Proj/go/src/github.com/user/myproject/transport (from $GOPATH)
这很奇怪,因为包存在于那个确切的路径上。
我究竟做错了什么??
解决方案
在这种特殊情况下,您不应该 import clien
t 而是从哪个路径来,因为那是您的路径。GOPATH/src
github.com/user/myproject/client
我看到您描述问题的方式与计算机上的方式不完全一样。你换了一些东西。这是可以理解的,你不想告诉全世界你的电脑是什么样子的。所以你用“ <me>
”代替了你的名字。
您还替换了项目名称,MyProject
在您的问题中,就像用户名一样,这是我们看不到的潜在错误点,因为您替换了它。永远不要在 Windows 上的开发路径中使用长名称,因为 Windows 有时会对它们进行恶作剧。
我确信有些事情是个问题。尝试在 go-path 中使用您的短目录名称。检查这个:https ://superuser.com/questions/1182040/strange-short-path-name-on-windows
推荐阅读
- csv - 如何导入 CSV 文件并修改其内容以适应猫鼬数据库中的模式
- angular - 分组时数据从垫表中消失
- database - HanaDB - 复杂性:SELECT COUNT( * ) FROM dbtab
- postgresql - 如何从 pl/pgsql 调用 DROP USER?
- gradle - gradle项目中的openApiGenerate插件不生成源代码
- java - Log4j2 不会在 Spring Boot 中登录到文件
- extjs - Extjs 7 现代组合框多选错误
- angularjs - 将嵌套的 AngularJS 服务转换为 Angular Observable 服务
- javascript - 为什么要将函数传递给反应组件以获取数据而不是数据本身?
- python - 如何迭代 MeshGrid?