我想在不涉及远程仓库的情况下让Go模块工作。
src
是一个本地目录,包含了我所有的项目,也包括用Go以外的其他语言编写的项目。为了简单起见,我只显示了与我的问题相关的两个目录。
src
├── client
│ ├── go.mod
│ └── main.go
└── lib
├── go.mod
└── lib.go
这两个目录是... go.mod
文件是通过运行命令 go mod init client
在 src/client
和 go mod init lib
在 src/lib
.
srcclientmain.go。
package main
import "lib"
func main() {
lib.Hello()
}
srcliblib.go。
package lib
import "fmt"
func Hello() {
fmt.Println("Hello World")
}
我想在main.go中使用库lib.go,但无论我在导入路径中输入什么,都会显示这个错误。
main.go:3:8: package lib is not in GOROOT (/usr/lib/go/src/lib)
Go版本是 go1.14.3
如何从本地文件夹正确导入Go代码?
你可以使用 replace
指令。
项目结构。
root
├── client
│ ├── go.mod
│ └── main.go
└── lib
├── go.mod
└── lib.go
go.mod
的 root/lib
的模块。
module github.com/owner/root/lib
go 1.13
go.mod
的 root/client
模块。
module github.com/owner/root/client
go 1.13
require github.com/owner/root/lib v0.0.0
replace github.com/owner/root/lib => ../lib