首页 > 解决方案 > 使用模块,新安装的包不能在项目中引用

问题描述

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)。

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

标签: gogo-modules

解决方案


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

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

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

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

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


推荐阅读