golang 意外的目录布局
golang unexpected directory layout
所以我从 github 下载了 minio。com/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
is the root of the project - each of your Github repos will be checked out several folders below $GOPATH
.
Your $GOPATH
variable will point to the root of your Go workspace, as described in How to Write Go Code.
在你的情况下,在你的 GOPATH
文件夹下,你应该有
src/github.com/minio/minio
只有Anf 然后 "all minio directories, including vendor"
如果您在 goroot 和 gopath 下有重复的存储库,就会发生这种情况。删除 goroot 那个。
在 Golang 1.13 上,从 1.11 升级到 1.13 后,我的所有代码突然发生了这种情况。
golang 1.13 似乎不再喜欢像“./something”这样的导入。
我必须开发任何像 "myapp/something"
这样的导入
还有 go1.13(移动到 mod),我发现如果我将我的项目从我的 $GOPATH 下移出,我可以使用 import "./ mypackage 语句。 $GOPATH 下的同一个项目不会因上述 OP 给出的错误而构建。我还没有准备好放弃我的 $GOPATH 环境变量,但我确实喜欢在可能的情况下将小包保留在他们的项目本地,而不在不需要时提交到 go.mod 文件。
在我意识到由于我的项目位置而无法正确导入本地包后,我遇到了这个问题。
我的项目不在 GOPATH 位置,所以我把我的项目移到了那里。搬家前
我通过 ./package name 导入了包,在我将我的项目移动到 GOPATH 后,我通过 projectname/packagename.
正确地导入了包
所以我所做的是以正确的方式导入包 "projectname/packagename",所以我将导入“./packagename”更正为“”projectname/packagename。
希望它不会太混乱。似乎这个错误可以从不同的情况出现。
如果你的项目文件夹在 $GOPATH 目录下,那么你应该导入你的包而不使用“./package”。
仅当您的项目文件在 $GOPATH
之外时,您才可以导入名称为“./package”的包
所以我从 github 下载了 minio。com/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
is the root of the project - each of your Github repos will be checked out several folders below$GOPATH
.
Your$GOPATH
variable will point to the root of your Go workspace, as described in How to Write Go Code.
在你的情况下,在你的 GOPATH
文件夹下,你应该有
src/github.com/minio/minio
只有Anf 然后 "all minio directories, including vendor"
如果您在 goroot 和 gopath 下有重复的存储库,就会发生这种情况。删除 goroot 那个。
在 Golang 1.13 上,从 1.11 升级到 1.13 后,我的所有代码突然发生了这种情况。
golang 1.13 似乎不再喜欢像“./something”这样的导入。
我必须开发任何像 "myapp/something"
这样的导入还有 go1.13(移动到 mod),我发现如果我将我的项目从我的 $GOPATH 下移出,我可以使用 import "./ mypackage 语句。 $GOPATH 下的同一个项目不会因上述 OP 给出的错误而构建。我还没有准备好放弃我的 $GOPATH 环境变量,但我确实喜欢在可能的情况下将小包保留在他们的项目本地,而不在不需要时提交到 go.mod 文件。
在我意识到由于我的项目位置而无法正确导入本地包后,我遇到了这个问题。 我的项目不在 GOPATH 位置,所以我把我的项目移到了那里。搬家前
我通过 ./package name 导入了包,在我将我的项目移动到 GOPATH 后,我通过 projectname/packagename.
正确地导入了包所以我所做的是以正确的方式导入包 "projectname/packagename",所以我将导入“./packagename”更正为“”projectname/packagename。 希望它不会太混乱。似乎这个错误可以从不同的情况出现。
如果你的项目文件夹在 $GOPATH 目录下,那么你应该导入你的包而不使用“./package”。
仅当您的项目文件在 $GOPATH
之外时,您才可以导入名称为“./package”的包