【发布时间】:2016-05-30 13:39:45
【问题描述】:
我是新手,正在编写一个我想要本地化的示例代码。
在原来的main.go import 语句中是:
import (
"log"
"net/http"
"github.com/foo/bar/myapp/common"
"github.com/foo/bar/myapp/routers"
)
现在我在/home/me/go/src/myapp 中有common 和routers 包
所以我将导入语句转换为:
import (
"log"
"net/http"
"./common"
"./routers"
)
但是当我运行 go install myapp 时,我得到了这些错误:
can't load package: /home/me/go/src/myapp/main.go:7:3: local import "./common" in non-local package
另外,当我在 import 语句中使用 common 和 routers 而不是 ./common 和 ./routers 时,我得到:
myapp/main.go:7:3: cannot find package "common" in any of:
/usr/local/go/src/common (from $GOROOT)
/home/me/go/src/common (from $GOPATH)
myapp/main.go:8:2: cannot find package "routers" in any of:
/usr/local/go/src/routers (from $GOROOT)
/home/me/go/src/routers (from $GOPATH)
我该如何解决这个问题?
【问题讨论】:
-
无论导入路径如何,所有导入都是“本地”的。详细解释见"How to Write Go Code"。
-
@JimB 抛开哲学争论,我关心的是如何解决上述问题。
-
我并不是要发表哲学声明,我是说所有导入都发生在您的本地文件系统中;无论它们是否来自远程仓库,都没有任何区别。不要尝试使用相对路径(它们有时会起作用,但不鼓励),并仔细阅读“如何编写 Go 代码”文档,特别是 "Code Organization" 上的部分。
标签: go