我有一个我正在做的项目,名为 project1
.
几个月前,我在 project2
工作。其中包含名为 engine
的包我想在project1
里面使用它.
这些项目是本地的,所以我读了here如何导入本地项目并尝试过但收到错误:
Cannot resolve file `project2`
一件有趣的事情是,当我输入
project2
的名称时在 import(..)
部分,Goland 将其识别为模块,但在我按下它后,我收到无法解决的错误。使用 Goland,我可以选择运行
sync packages of 'project1'
但是当我按下它时,我也收到了一个错误:project1/pkg/utils imports
project2: cannot find module providing package project2
我也尝试创建
vendor
project1
中的文件夹并复制粘贴整个 project2
在 vendor
下方文件夹,但它仍然没有帮助。知道为什么它没有解决吗?
最佳答案
如果您的 $GOPATH
下有两个项目, 你可以看看这个example用于导入项目。
编辑:
如果您使用 go modules
并且想要导入本地模块,那么您可以使用 replace
指示。
所以,基本上你必须添加你的go.mod
您的Project1
这些行:
require /$module-name-project2/$package-name v0.0.0
replace $module-name-project2/$package-name => ../$localpath-to-project2
更多信息 here
一个简单的例子(我的两个项目都在
$GOPATH
之外并使用 go modules
):Project1
位于 .../go-experiments/project1
下main.go
:package main
import "go-experiments/project2/greeting"
func main() {
println("How to greet?")
greeting.English()
}
go.mod
:module go-experiments/project1
require go-experiments/project2/greeting v0.0.0
replace go-experiments/project2/greeting => ../project2
go 1.14
Project2
位于 .../go-experiments/project2
下greeter.go
: package greeting
func English() {
println("hi, i am boo")
}
go.mod
:module go-experiments/project2
go 1.14
关于go - 无法从其他项目导入本地项目 : cannot find module providing package <package_name>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61302548/