golang意外目录布局

golang意外目录布局,go,goland,Go,Goland,所以我从github.com/minio/minio下载了minio 我想从源头上运行它 我创建的目录如下所示: ~/Downloads/minio-RELEASE.2017-06-13T19-01-01Z | src | all minio directories, including vendor, like the image below 我还使用godep解析GOPATH下的其他依赖项 现在我从Gogland(go IDE)运行它 它表明: GOROOT=/usr/l

所以我从github.com/minio/minio下载了minio

我想从源头上运行它

我创建的目录如下所示:

~/Downloads/minio-RELEASE.2017-06-13T19-01-01Z
|
 src
   |
    all minio directories, including vendor, like the image below

我还使用
godep
解析GOPATH下的其他依赖项

现在我从Gogland(go IDE)运行它

它表明:

GOROOT=/usr/local/Cellar/go/1.8.3/libexec
GOPATH=/Users/xl/Downloads/minio-RELEASE.2017-06-13T19-01-01Z:/Users/xl/go
/usr/local/Cellar/go/1.8.3/libexec/bin/go build -i -o /private/var/folders/8v/6dg7d6mx2850sv1gp8ts9thm0000gn/T/go_run_main_gogo /Users/xl/Downloads/minio-RELEASE.2017-06-13T19-01-01Z/src/main.go
unexpected directory layout:
    import path: github.com/Azure/azure-sdk-for-go/storage
    root: /Users/xl/Downloads/minio-RELEASE.2017-06-13T19-01-01Z/src
    dir: /Users/xl/Downloads/minio-RELEASE.2017-06-13T19-01-01Z/src/vendor/github.com/Azure/azure-sdk-for-go/storage
    expand root: /Users/xl/Downloads/minio-RELEASE.2017-06-13T19-01-01Z/src
    expand dir: /Users/xl/Downloads/minio-RELEASE.2017-06-13T19-01-01Z/src/vendor/github.com/Azure/azure-sdk-for-go/storage
    separator: /
现在我很困惑,有什么问题吗?文件都在那里,目录就像它打印的一样。我怎么修理它?谢谢。

请参阅

$GOPATH
是项目的根目录-每个Github repo都将在
$GOPATH
下面的几个文件夹中检出
您的
$GOPATH
变量将指向Go工作区的根,如中所述

在您的
GOPATH
文件夹下,您应该

src/github.com/minio/minio

Anf只有“所有迷你目录,包括供应商”

如果您在goroot和gopath下有重复的回购,则可能发生这种情况。删除goroot版本。

在Golang 1.13上,从1.11升级到1.13后,我所有的代码都突然出现了这种情况

看起来golang 1.13不再喜欢像“/某物”这样的导入


我必须开发任何导入,比如“myapp/something”

还有go1.13(使用move to go mod),我发现如果我将我的项目从$GOPATH下移出,我可以使用导入“/mypackage”语句。$GOPATH下的同一个项目不会生成上面OP给出的错误。我还没有准备好放弃$GOPATH环境变量,但我确实希望尽可能将小的包保留在项目的本地,而不必在不必要时提交go.mod文件。

在意识到由于项目位置的原因,无法正确导入本地包后,我遇到了这个问题。 我的项目不在GOPATH位置,所以我将项目移到了那里。搬家前

我通过./package name导入包,在GOPATH中移动项目后,我通过projectname/packagename正确导入包

因此,我所做的是以“projectname/packagename”的正确方式导入包,因此我将导入“../packagename”更正为“projectname/packagename”。
希望不会太混乱。此错误可能在不同的情况下出现。

如果您的项目文件夹位于$GOPATH目录下,那么您应该在不使用“/package”的情况下导入包


只有在项目文件位于$GOPATH之外时,才能导入名为“/package”的包

谢谢您的回复。但我是新手,仍然不知道如何修复它。。你说我应该有
src/github.com/minio/minio
,但我的minio是直接的源代码,而不是下载的bo
go-get
@Wingzero-create
GOPATH/src/github.com/minio
,然后在该文件夹中克隆你的repo:这将为你提供
GOPATH/src/github.com/minio/minio
,然后,
go build
就可以了。或者,只需尝试一个
获取github.com/minio/minio
:这应该也能做到(克隆+构建)惊人,它正在工作。谢谢!一个遗憾是Gogland仍然无法在我的断点处调试break。不管怎样,如果你告诉我在哪里设置断点,我会在这里跟进一个问题,希望能解决它。附录:现在最好的方法是使用模块。使用go mod init从代码中创建一个模块,然后将对目录的引用作为“replace”指令插入。有关更多信息,请参阅