Golang中如何获取GitHub上的库或包
Golang中如何获取GitHub上的库或包 大家好,
我通常使用我的Linux机器,运行VS Code和Go扩展来处理所有的Go项目。这工作得很好,但不幸的是,我现在使用的是我的工作笔记本电脑,它基于Windows系统。
笔记本电脑上运行的是Windows 10,同时安装了VS Code和Go版本1.14.6。虽然不是最新的版本,但也不超过6个月。
我一直完全无法弄清楚如何从github下载/安装特定的库或包。通常这在我的Linux机器上轻而易举,但在Windows上,我似乎无法让它工作。
当我运行代码时(我知道它能工作,因为我已经在另一台机器上看到它构建并运行了),我收到以下错误: main.go:6:2: 在任何位置都找不到包“github com/jedib0t/go-pretty/v6/table”: C:\Go\src\github.com\jedib0t\go-pretty\v6\table (来自 $GOROOT) C:\Gowork\src\github.com\jedib0t\go-pretty\v6\table (来自 $GOPATH)
注意:请忽略缺失的点。Go论坛不允许我在上面提到的错误中的github和com之间加点!
如果我在命令行中尝试运行以下命令(或其各种变体):
go get github.com/jedib0t/...
它不会出现错误,实际上看起来完成了,但我仍然没有库可以编译。
如果我尝试我认为更合理的方式:
go get github.com/jedib0t/go-pretty
我会被告知:
go build github.com/jedib0t/go-pretty: C:\Gowork\src\github.com\jedib0t\go-pretty 中没有非测试的Go文件
我在Windows上做错了什么?为什么我不能做在Linux上如此简单的事情?
感谢帮助!
更多关于Golang中如何获取GitHub上的库或包的实战教程也可以访问 https://www.itying.com/category-94-b0.html
在遗留项目中,vendoring(依赖项本地化)是一项手动任务,尽管存在一些承诺能提供帮助的工具。我从未使用过这些工具。
据我所知,在模块中可以通过 go 命令实现 vendoring。不过,我实际上从未使用过它,因为在我的团队中,锁文件(lockfile)方法已经足够。
也许其他人可以分享更多信息?
更多关于Golang中如何获取GitHub上的库或包的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
你的项目是使用 Go 模块,还是旧版结构,或者甚至将依赖项进行了本地化(vendoring)?
既然你遇到了找不到依赖项的问题,很可能是因为你没有对它们进行本地化。
所以,如果你使用的是旧版结构,请先将项目克隆到 GOPATH 的正确位置来准备你的项目。
然后,无论是旧版结构还是 Go 模块,都请 cd 到你的项目文件夹并运行 go get。现在 Go 应该能识别依赖项并下载它们。
感谢NobbZ,我最终通过使用另一台机器解决了问题。我怀疑我可能遗漏的关键部分是在使用 go get 之前先 cd 到我的项目目录(我从未意识到这是一个要求,可能在过去的6个月里使用 go get 时只是运气好)。
关于vendor机制,虽然我明白你的意思,但我仍然不清楚Go是如何管理vendor化的(例如,我应该运行什么命令来确保本地克隆或vendor了一个库?go get xxx 对此是否足够?我必须手动保持其更新吗?vendor的包是特定于一个项目的,还是全局可供所有项目访问?)我还没有找到一个合适的在线资源来清楚地回答这类问题。
在Windows上使用Go获取GitHub包时,主要问题通常是GOPATH设置和模块支持。从Go 1.11开始,推荐使用Go Modules。以下是解决方案:
1. 启用Go Modules
# 设置环境变量(如果未设置)
go env -w GO111MODULE=on
# 验证设置
go env GO111MODULE
2. 初始化或使用现有模块
# 在项目目录中初始化模块
cd your-project-directory
go mod init your-module-name
# 或者如果已有go.mod文件,直接获取依赖
go mod tidy
3. 获取特定包
# 获取go-pretty包(会自动下载到模块缓存)
go get github.com/jedib0t/go-pretty/v6/table
# 或者获取最新版本
go get github.com/jedib0t/go-pretty/v6/table@latest
4. 完整示例代码
package main
import (
"github.com/jedib0t/go-pretty/v6/table"
"os"
)
func main() {
t := table.NewWriter()
t.SetOutputMirror(os.Stdout)
t.AppendHeader(table.Row{"#", "Name", "Age"})
t.AppendRows([]table.Row{
{1, "John", 30},
{2, "Jane", 25},
})
t.Render()
}
5. 检查环境配置
# 查看当前Go环境
go env
# 确保GOPATH正确设置(通常不需要手动修改)
echo %GOPATH%
6. 清理并重新获取
# 清理模块缓存
go clean -modcache
# 重新下载所有依赖
go mod download
关键点:
- Windows上路径使用反斜杠,但导入语句仍使用正斜杠
- Go Modules会自动管理依赖,无需手动操作GOPATH/src目录
- 确保VS Code使用正确的Go版本和模块设置
执行这些步骤后,go build和go run应该能正常工作。

