golang意外的目录布局

时间:2017-08-01 03:59:51

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

enter image description here

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

现在我从Gogland(去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: /

现在我很困惑,问题是什么?文件都在那里,目录就像它的打印一样。我如何解决它?感谢。

6 个答案:

答案 0 :(得分:9)

在Golang 1.13上,从1.11升级到1.13后,我的所有代码突然发生在我身上。

似乎golang 1.13不再喜欢“ ./something”之类的导入。

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

答案 1 :(得分:5)

请参阅GitHub code layout

  

$GOPATH是项目的根目录 - 您的每个Github存储库都会在$GOPATH下面的几个文件夹中签出。
  您的$GOPATH变量将指向Go工作区的根,如How to Write Go Code中所述。

在您的情况下,在GOPATH文件夹下面,您应该

src/github.com/minio/minio

仅Anf 然后“所有minio目录,包括供应商”

答案 2 :(得分:2)

还使用go1.13(带有move go模式),我发现如果我将项目从$ GOPATH下移出,则可以使用 import“ ./mypackage” 语句。 $ GOPATH下的同一项目不会因上述OP给出的错误而构建。我还没有准备放弃$ GOPATH环境变量,但我希望在可能的情况下将小型软件包保留在其项目的本地,而在不需要时不提交go.mod文件。

答案 3 :(得分:0)

如果您在goroot和gopath下有重复的存储库,则可能会发生这种情况。删除goroot一个。

答案 4 :(得分:0)

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

我通过./package名称导入了软件包,并且在GOPATH中移动了项目之后,我通过projectname / packagename正确导入了软件包。

所以我要做的是以正确的方式“项目名称/软件包名称”导入软件包,因此我将导入的“ ./软件包名称”更正为“项目名称/软件包名称”。 希望它不会太混乱。看来此错误可能出现在不同的情况下。

答案 5 :(得分:0)

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

只有当您的项目文件在 $GOPATH 之外时,您才能导入带有“./package”名称的包