过去两个小时,我一直在尝试解决此问题。我一生都无法理解开发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)
这很奇怪,因为该软件包位于该确切路径上。
我在做什么错??
答案 0 :(得分:0)
您不应该导入rosnode list
t,而应该导入clien
的路径,在这种情况下,GOPATH/src
就是您的路径。
我看到您描述问题的方式与计算机上的描述并不完全相同。您替换了一些东西。这是可以理解的,您不想告诉世界您的计算机的外观。因此,您将名称替换为“ github.com/user/myproject/client
”。
您还用问题<me>
替换了项目名称,这也与用户名一样,也可能是我们看不到的错误的潜在原因,因为您已将其替换。永远不要在Windows的开发路径中使用长名称,因为Windows有时会对它们使用肮脏的技巧。
我确定这是有问题的事情。尝试在go-path中使用您的短目录名称。检查以下内容:https://superuser.com/questions/1182040/strange-short-path-name-on-windows