在项目目录中找不到包

时间:2018-06-24 09:28:20

标签: 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"

请注意,我的GOPATHGOROOT已设置。

这是我的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)

这很奇怪,因为该软件包位于该确切路径上。

我在做什么错??

1 个答案:

答案 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