首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Go:非本地包中的本地导入

Go:非本地包中的本地导入
EN

Stack Overflow用户
提问于 2015-06-17 15:34:27
回答 6查看 70.4K关注 0票数 64

我有以下文件结构:

代码语言:javascript
运行
复制
.
├── bin
│   └── hello
├── pkg
└── src
    └── jacob.uk.com
        ├── greeting
        │   └── greeting.go
        └── helloworld.go

5 directories, 3 files

使用以下GOPATH

代码语言:javascript
运行
复制
/Users/clarkj84/Desktop/LearningGo

src文件夹中执行/usr/local/go/bin/go install jacob.uk.com时,我得到错误local import "./greeting" in non-local package

helloworld.go

代码语言:javascript
运行
复制
package main;
import "./greeting"

func main() {

}
EN

回答 6

Stack Overflow用户

发布于 2015-06-17 15:46:09

在为go install指定非本地包时,不能使用本地导入。如果希望本地导入正常工作,首先将工作目录更改为src/jacob.uk.com,然后执行go install (不指定包)。

当然,使用您提供的helloworld.go会得到一个编译错误:imported and not used。但是,一旦您使用了导入的greeting包中的内容,它就应该会被编译。

但是您根本不应该使用本地导入。相反,可以这样写:

代码语言:javascript
运行
复制
import "jacob.uk.com/greeting"

这样你就可以在任何地方编译/运行/安装它了。

票数 44
EN

Stack Overflow用户

发布于 2016-01-18 20:01:47

键入go build不适用于相对导入路径;您必须键入go build main.go

对于相对导入路径,go install根本不起作用。

https://golang.org/cmd/go/#hdr-Relative_import_paths上有文档记录

看见

寻求解释。

票数 29
EN

Stack Overflow用户

发布于 2020-09-01 14:05:26

您可以在go 1.11<=中使用replace添加本地包到您的go.mod中,并使用"replace“关键字,如下所示(您不需要创建github存储库,只需像这样添加行)

代码语言:javascript
运行
复制
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"
)

然后在您的main.go =>中

代码语言:javascript
运行
复制
import (
    alog "github.com/yourAccount/yourModule/localFolder"
    slog "github.com/yourAccount/yourModule/localFolder"
)
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30885098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档