Golang中Go Get尝试从本地工作区拉取而非HTTPS源的问题

Golang中Go Get尝试从本地工作区拉取而非HTTPS源的问题

$ go get github.com/{user}/{repository}
`can't load package: package github.com/{user}/{repository}: no Go files in C:\Users\{me}\Documents\GoWorkspace\src\github.com\{user}\{repository}

上面的输出看起来像是在我的GOPATH中搜索获取,而不是去github上获取。

如果这是一个非常基础的错误,我表示歉意,我正在按照教程学习,还没有发现其他人遇到过这个问题。


更多关于Golang中Go Get尝试从本地工作区拉取而非HTTPS源的问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html

5 回复

我猜该用户的Git仓库不可用。

更多关于Golang中Go Get尝试从本地工作区拉取而非HTTPS源的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这是正确的,但除非你使用 -u 来更新它们,否则它不会获取已经存在的内容。

在我看来,您是在说’go get’不是从GitHub获取代码库的正确命令,因为它不会查找https协议。这样理解对吗?如果确实如此,是否有其他命令可以实现这个功能?

除非您正在使用模块,否则会首先搜索您的 GOPATH

并且其中存在的任何内容都将被使用。您可以使用 go get -u ... 来更新 GOPATH 中现有的包。

func main() {
    fmt.Println("hello world")
}

这个问题通常是由于Go模块模式未启用或GOPATH工作区配置导致的。当Go工具链在GOPATH模式下运行时,它会优先在本地工作区查找包,而不是从远程仓库拉取。

以下是解决方案:

  1. 启用Go模块支持(推荐):
# 在项目目录中初始化模块
go mod init your-project-name

# 然后执行go get
go get github.com/{user}/{repository}
  1. 如果必须使用GOPATH模式,确保仓库已正确克隆到GOPATH中:
# 手动克隆仓库到GOPATH
mkdir -p $GOPATH/src/github.com/{user}
cd $GOPATH/src/github.com/{user}
git clone https://github.com/{user}/{repository}.git

# 然后进入包目录执行go get
cd $GOPATH/src/github.com/{user}/{repository}
go get
  1. 检查Go环境配置
# 查看当前模块模式
go env GO111MODULE

# 如果显示auto或off,可以强制启用模块模式
export GO111MODULE=on
go get github.com/{user}/{repository}
  1. 清理并重新获取
# 清理模块缓存
go clean -modcache

# 重新获取依赖
go get -u github.com/{user}/{repository}

在Go 1.16及以上版本中,模块模式是默认启用的。如果遇到这个问题,建议检查当前目录是否在GOPATH内,或者通过go env GOPATH确认GOPATH设置。

回到顶部