我在$GOPATH
之外有一个项目,我想使用go mod
。
但是,当我从$GOPATH
中的项目中复制代码并运行$ GO111MODULE=on go mod init github.com/jgoc/modtest
$ GO111MODULE=on go run main.go
时,会出现错误
go version go1.12.5 windows/amd64
package main
import (
"github.com/hajimehoshi/ebiten"
"github.com/hajimehoshi/ebiten/vector"
)
build command-line-arguments: cannot load github.com/hajimehoshi/ebiten/vector: cannot find module providing package github.com/hajimehoshi/ebiten/vector
答案 0 :(得分:1)
基于最近的编辑,以提供实际的程序包名称,听起来您需要使用具有github.com/hajimehoshi/ebiten
程序包的vector
依赖项版本。
具有有效的semver发行标签的github.com/hajimehoshi/ebiten
的最新版本是https://github.com/hajimehoshi/ebiten/tree/v1.9.3。该版本似乎没有vector
软件包。
@master
版本确实具有vector
软件包。 @v1.10.0-alpha
没有vector
软件包。也许从@master
开始,至少看看您是否可以编译?
这对我有用:
go get -d github.com/hajimehoshi/ebiten/vector@master
有关更多详细信息,请阅读模块Wiki的How to Upgrade and Downgrade Dependencies部分。
此外,模块的实际名称是什么?以及用于导入驻留在该模块中的代码的实际导入路径是什么?
您写道:
go mod init Desktop/modtest
通常,模块的名称(也称为“模块路径”)应以github.com之类的主机名开头,并且通常以回购协议开头,例如:
go mod init github.com/my/repo
。
然后,使用导入路径(以您传递给.go
的完整模块路径开头的导入路径,以go mod init
代码导入程序包,例如:
import "github.com/my/repo/pkg1"
。
使用您的示例,它将是:
go mod init github.com/<author>/<package>
导入为:
import (
"github.com/<author>/<package>"
"github.com/<author>/<package>/<sub-package>"
)
如果模块路径与导入路径不一致,则可能会得到与您看到的类似的错误。 (您的“模块路径”是您作为go mod init
的参数传递的,然后您可以在module
文件的go.mod
行上看到它。)
有关更多背景信息和更多详细信息,请参见this answer。