Go语言Windows服务依赖包安装失败:无法找到golang.org/x/sys相关包
问题描述
我正尝试按照官方示例创建Windows服务,示例中的service.go包含以下导入语句:
import ( "fmt" // 其他依赖 "golang.org/x/sys/windows/svc" "golang.org/x/sys/windows/svc/debug" "golang.org/x/sys/windows/svc/eventlog" )
我在应用程序目录下执行命令:
go get golang.org/x/sys/windows/eventlog
得到如下错误响应:
can't load package: package golang.org/x/sys/windows/eventlog: cannot find package "golang.org/x/sys/windows/eventlog" in any of: C:\Program Files\Go\src\golang.org\x\sys\windows\eventlog (from $GOROOT) C:\Users\Paul\go\src\golang.org\x\sys\windows\eventlog (from $GOPATH)
我原本以为go get会自动下载该包,请问如何获取该包以正常运行我的程序?
解决方法
老哥,你这问题根源是包路径输错了!你要下载的eventlog包是在svc子目录下的,不是直接在windows目录下。按下面的步骤操作就能解决:
方法一:使用Go模块(推荐,Go 1.11+)
如果你的项目还没初始化Go模块,先在项目根目录执行:
go mod init your-project-name
然后执行正确的go get命令:
go get golang.org/x/sys/windows/svc/eventlog
这条命令会自动下载整个golang.org/x/sys仓库,并将依赖添加到你的go.mod文件里,之后就能正常导入使用了。
方法二:手动克隆到GOPATH路径(适用于旧版Go)
如果你还在使用GOPATH模式,直接克隆仓库到指定路径:
git clone https://github.com/golang/sys.git $GOPATH/src/golang.org/x/sys
克隆完成后,golang.org/x/sys/windows/svc/eventlog这个路径就存在了,你的代码就能找到对应的包了。
另外提醒下,现在Go官方推荐用模块管理依赖,所以优先用方法一哦!
内容的提问来源于stack exchange,提问作者CarbonMan
相关产品推荐
相关产品推荐

