无法从其他项目导入本地项目:找不到提供包的模块 <package_name>
Can't import local project from other project: cannot find module providing package <package_name>
我有一个项目,名为 project1
。
几个月前,我在 project2
上工作,其中包含名为 engine
的包,我想在 project1
.
中使用它
这些项目是本地的,所以我阅读了 如何导入本地项目并进行了尝试但收到错误消息:
Cannot resolve file `project2`
一件有趣的事情是,当我在 import(..)
部分键入 project2
的名称时,Goland 将其识别为模块,但在我按下它之后,我收到了它不能的错误下定决心。
使用 Goland 我可以选择 运行 sync packages of 'project1'
但是当我按下它时我也收到了一个错误:
project1/pkg/utils imports
project2: cannot find module providing package project2
我还尝试在 project1
中创建 vendor
文件夹并将整个 project2
复制粘贴到 vendor
文件夹下,但仍然没有帮助。
知道为什么没有解决吗?
如果您的两个项目都在 $GOPATH
下,您可以查看此 导入项目。
编辑:
如果您正在使用 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
我有一个项目,名为 project1
。
几个月前,我在 project2
上工作,其中包含名为 engine
的包,我想在 project1
.
中使用它
这些项目是本地的,所以我阅读了
Cannot resolve file `project2`
一件有趣的事情是,当我在 import(..)
部分键入 project2
的名称时,Goland 将其识别为模块,但在我按下它之后,我收到了它不能的错误下定决心。
使用 Goland 我可以选择 运行 sync packages of 'project1'
但是当我按下它时我也收到了一个错误:
project1/pkg/utils imports
project2: cannot find module providing package project2
我还尝试在 project1
中创建 vendor
文件夹并将整个 project2
复制粘贴到 vendor
文件夹下,但仍然没有帮助。
知道为什么没有解决吗?
如果您的两个项目都在 $GOPATH
下,您可以查看此
编辑:
如果您正在使用 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