使用模块,无法在项目中引用新安装的包

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

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


扬帆大鱼
浏览 142回答 2
2回答

慕侠2389804

我应该做不同的事情,以便我的导入语句可以找到新安装的包吗?不需要。有了模块,根本不需要预先安装包。使用模块不应该把所有的包都安装在项目路径的某个地方吗?不。它们以某种格式下载到某处并从该位置使用,但它们不像go get.显示 go env 的输出以及 go mod 供应商产生的内容。我应该做不同的事情,以便我的导入语句可以找到新安装的包吗?不需要。有了模块,根本不需要预先安装包。使用模块不应该把所有的包都安装在项目路径的某个地方吗?不。它们以某种格式下载到某处并从该位置使用,但它们不像go get.显示 go env 的输出以及 go mod 供应商产生的内容。

一只萌萌小番薯

我能够解决此问题。总结是没有必要通过'go get'来“安装”一个包。相反,只需确保您的项目已初始化为使用“go mod init”命令使用模块,然后在导入语句中包含包名称。下一个构建事件将下拉包及其所有依赖项。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go