3

go version go1.11.4 darwin/amd64 GOPATH 未设置,但之前设置为 $HOME/Development/go

项目路径在 $HOME/code/ 下

我能够使用命令成功(至少没有错误)安装 go-sql-driver/mysql 包

go get github.com/go-sql-driver/mysql@v1

当我在导入语句中包含对该包的引用时

import(
_ "github.com/go-sql-driver/mysql")

在我的代码中,我看到了错误

无法导入 github.com/go-sql-driver/mysql(找不到导入:“github.com/go-sql-driver/mysql”)

我在我的项目根目录中运行了 go mod init 并创建了一个 go.mod 文件。当我运行 go get 命令时,我看到一个 require 语句添加到该包的文件中。但似乎该软件包的文件已安装在默认的 $HOME/go 目录中(因为我已取消设置 GOPATH)。

我应该做不同的事情以便我的导入语句可以找到新安装的包吗?使用模块不应该将所有包都安装在项目路径中的某个地方吗?

4

2 回答 2

1

我应该做不同的事情以便我的导入语句可以找到新安装的包吗?

不。有了模块,根本不需要预先安装包。

使用模块不应该将所有包都安装在项目路径中的某个地方吗?

不会。它们以某种格式下载到某处并从该位置使用,但它们不像旧的 GOPATH 变体那样“安装” go get

显示 go env 的输出以及 go mod 供应商生产的内容。

于 2019-01-10T04:48:14.090 回答
0

我很确定我做错了。在仔细参考以下golang modules wiki记录的步骤后,我能够解决此问题。总结是不需要通过“go get”来“安装”一个包。相反,只需确保您的项目已使用“go mod init”命令初始化为使用模块,然后在导入语句中包含包名称。下一个构建事件将拉下包及其所有依赖项。

于 2019-01-10T18:13:36.340 回答