Golang在Windows 10中无法找到多个包的问题
Golang在Windows 10中无法找到多个包的问题 你好! 😊
我在这里是因为我正在尝试编译一个使用 go-ethereum 的项目,但在构建时遇到了很多问题。我搜索了一段时间,但没找到什么有用的信息,而且我也担心会做错什么,因为我对 Go 的生态系统(甚至 Windows…)理解得并不透彻。
情况是这样的:我有一个 Go 客户端,它通过命令 ethclient.Dial("ipc") 运行 go-ethereum(来自 GitHub),并执行其他操作。
在我的 Linux 系统上运行 go build 时,一切正常,运行良好,所以我知道我的代码是正确的。但现在我需要在 Windows 上编译它。我按照这里的说明安装了 go-ethereum 包:
并且还通过 choco 从这里安装了 gcc:
使用的是 mingw 64 位。
现在我应该拥有了构建文件所需的所有工具,但当我在 Windows PowerShell 中执行这行命令时:
C\Go-Client> go build .\go-client.go .\LogStorage.go
我遇到了很多 " […] cannot find package “github…” in any of:
… (from $GOROOT)
… (from $GOPATH)" 的错误。
(我将在下面复制粘贴 PowerShell 的输出)。
当我在 Linux 上查看 go \src \github com \VictoriaMetrics 这个文件夹时,它是存在的,而在 Windows 上,它并不存在。我想知道如何在不手动下载每个 GitHub 依赖项的情况下解决这个问题…
如果能得到任何帮助,我将不胜感激,因为我完全不知道该怎么办。
我的系统是 Windows 10,64 位,使用的是 64 位的 gcc 8.1.0,go 环境变量如下: GOPATH=C:\Users\jfelten\go GOROOT=c:\go
非常感谢,致以最诚挚的问候,
以下是命令的部分 PowerShell 输出:

更多关于Golang在Windows 10中无法找到多个包的问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html
由于我在第一篇帖子中不能包含超过两个链接,所以有些链接中存在空格。
感谢您的建议!当我运行 go get pkg 时,它没有生效,并且我遇到了以下错误:包 pkg:无法识别的导入路径“pkg”:导入路径不是以主机名开头。
经过搜索,我发现我将 go-ethereum 安装在了错误的位置。因此,我将其移动到了 go 的文件夹内。我还有几个库需要获取(5个),所以我使用 go get -v url 命令获取了它们。
谢谢!
在Windows上遇到Go包找不到的问题,通常是由于GOPATH设置或模块管理方式导致的。以下是解决方案:
1. 启用Go模块(推荐)
在项目根目录执行:
# 初始化Go模块
go mod init your-project-name
# 下载所有依赖
go mod tidy
2. 如果已使用Go模块,检查go.mod文件
确保go.mod文件包含正确的依赖:
# 查看当前依赖
go list -m all
# 如果缺少ethereum依赖,添加它
go get github.com/ethereum/go-ethereum
3. 设置正确的环境变量
在PowerShell中设置:
# 设置GO111MODULE(如果使用Go 1.16+)
$env:GO111MODULE = "on"
# 设置代理(如果网络有问题)
$env:GOPROXY = "https://goproxy.cn,direct"
# 验证设置
go env GOPATH
go env GOROOT
4. 完整构建示例
# 进入项目目录
cd C:\Go-Client
# 初始化模块(如果还没有go.mod)
go mod init go-client
# 获取依赖
go mod tidy
# 构建
go build -o client.exe .
5. 如果仍然有问题,清理缓存
# 清理Go模块缓存
go clean -modcache
# 重新下载依赖
go mod download
6. 检查项目结构
确保项目结构正确:
C:\Go-Client\
├── go.mod
├── go.sum
├── go-client.go
└── LogStorage.go
主要问题可能是没有使用Go模块管理依赖。在Windows上,Go模块是管理依赖的最佳方式,可以避免手动下载每个包的问题。

