我有以下文件结构:
.
??? bin
? ??? hello
??? pkg
??? src
??? jacob.uk.com
??? greeting
? ??? greeting.go
??? helloworld.go
5 directories, 3 files
Run Code Online (Sandbox Code Playgroud)
随着以下GOPATH
/Users/clarkj84/Desktop/LearningGo
Run Code Online (Sandbox Code Playgroud)
在文件夹中执行/usr/local/go/bin/go install jacob.uk.com后src,我收到错误local import "./greeting" in non-local package
helloworld.go:
package main;
import "./greeting"
func main() {
}
Run Code Online (Sandbox Code Playgroud)
icz*_*cza 36
指定非本地包时,不能使用本地导入go install.如果希望本地导入工作,首先更改工作目录src/jacob.uk.com然后执行go install(不指定包).
当然,有了helloworld.go你提供的,你将得到一个编译错误:imported and not used.但是一旦你使用了导入greeting包中的东西,它就应该编译.
但是你根本不应该使用本地导入.而是写:
import "jacob.uk.com/greeting"
Run Code Online (Sandbox Code Playgroud)
这样你就可以从任何地方编译/运行/安装它.
use*_*610 23
键入go build不适用于相对导入路径; 你必须打字go build main.go.
go install 相对导入路径根本不起作用.
它记录在https://golang.org/cmd/go/#hdr-Relative_import_paths
看到
作出解释.
您可以在 go 1.11<= go.mod 中使用 replace 添加本地包并使用“replace”关键字,如下所示(您不需要创建 github repo,只需添加这样的行)
module github.com/yourAccount/yourModule
go 1.15
require (
github.com/cosmtrek/air v1.21.2 // indirect
github.com/creack/pty v1.1.11 // indirect
github.com/fatih/color v1.9.0 // indirect
github.com/imdario/mergo v0.3.11 // indirect
github.com/julienschmidt/httprouter v1.3.0
github.com/mattn/go-colorable v0.1.7 // indirect
github.com/pelletier/go-toml v1.8.0 // indirect
go.uber.org/zap v1.15.0
golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a // indirect
)
replace (
github.com/yourAccount/yourModule/localFolder =>"./yourModule/localFolder"
github.com/yourAccount/yourModule/localFolder =>"./yourModule/localFolder"
)
Run Code Online (Sandbox Code Playgroud)
然后在你的 main.go =>
import (
alog "github.com/yourAccount/yourModule/localFolder"
slog "github.com/yourAccount/yourModule/localFolder"
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43310 次 |
| 最近记录: |