如何从Go模块导入特定的包?

时间:2018-07-27 14:44:05

标签: go module package versioning dependency-management

Golang 1.11beta2引入了对Modules的实验性支持。

我无法从go模块中导入特定的软件包。

这是构建应用程序时的错误:

$ go install
go: downloading github.com/udhos/modhello/modlib/lib v1.0.0
go: finding github.com/udhos/modhello latest
go: import "github.com/udhos/modhello/modapp" ->
    import "github.com/udhos/modhello/modlib/lib": cannot find module providing package github.com/udhos/modhello/modlib/lib

为什么上面显示的导入失败?

这是模块'modlib'中的软件包'lib':

# repo: modhello
# module: modlib
# package: lib
$ cat modhello/modlib/lib/modlib.go
package lib
func Sum(a, b int) int {
    return a + b
}
$ cat modhello/modlib/go.mod
module github.com/udhos/modhello/modlib

这是应用程序'modapp':

$ cat modhello/modapp/main.go
package main
import (
        "log"
        "github.com/udhos/modhello/modlib/lib"
)
func main() {
        run(1, 2)
}
func run(a, b int) {
        log.Printf("Sum(%d,%d) = %d", a, b, lib.Sum(a, b))
}
$ cat modhello/modapp/go.mod
module github.com/udhos/modhello/modapp
require github.com/udhos/modhello/modlib v1.0.0

git存储库标记为“ modlib / v1.0.0”。这就是发布模块版本的方式。

开始版本:

$ go version
go version go1.11beta2 linux/amd64
$ git --version
git version 2.18.0

我也在golang-nuts上发布了这个疑问:Host two distinct modules in one git repo?

1 个答案:

答案 0 :(得分:1)

go clean -modcache解决了该问题。

此处有更多详细信息:https://github.com/golang/go/issues/26695