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 输出:

image


更多关于Golang在Windows 10中无法找到多个包的问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html

4 回复

请获取 pkg 包

更多关于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模块是管理依赖的最佳方式,可以避免手动下载每个包的问题。

回到顶部