标签: vgo

访问go模块中的本地包(转1.11)

我正在尝试Go的新模块系统,并且无法访问本地软件包.以下项目位于我的gopath外部桌面上的文件夹中.

我的项目结构如下:

/
  - /platform
      - platform.go
  - main.go
  - go.mod
Run Code Online (Sandbox Code Playgroud)
// platform.go
package platform

import "fmt"

func Print() {
    fmt.Println("Hi")
}
Run Code Online (Sandbox Code Playgroud)
// main.go
package main

import "platform"

func main() {
    platform.Print()
}
Run Code Online (Sandbox Code Playgroud)

go build main.go 告诉我

cannot find module for path platform
Run Code Online (Sandbox Code Playgroud)

go vgo

40
推荐指数
3
解决办法
2万
查看次数

如何使用 go modules 删除已安装的包

我已经使用 go modules 安装了一个包(go get in Go 1.13),现在我想删除它。在文档中没有任何关于此的内容,并且在go get docu 中也没有。

手动从 go.mod 中删除包并不能解决问题,因此它保留在 go.sum 中。

我应该如何以干净的方式移除包裹?

go vgo go-modules

32
推荐指数
2
解决办法
3万
查看次数

golang中的模块缓存在哪里?

当我启用gomodules并构建我的go程序时,将下载所需的包.

但我可以在$ GOPATH/src /或$ GOPATH/src/mod中找到它们.

它们存放在哪里?

export GO111MODULE=on
go mod init
go build main.go 
go: finding github.com/sirupsen/logrus v1.0.6
go: downloading github.com/sirupsen/logrus v1.0.6
...
Run Code Online (Sandbox Code Playgroud)

go vgo

21
推荐指数
5
解决办法
7864
查看次数

如何使用vgo和给定的go.mod下载所有依赖项?

我正在使用vgo和一个Dockerfile开展一个go项目,我希望docker能够缓存项目的依赖项,这样它就有两个属性:

  1. 如果go.mod文件更改,将重新下载依赖项
  2. 如果我更改了包中的文件但没有更改go.mod,则不会重新下载依赖项.

现在,我这样做:

...
RUN go get -u golang.org/x/vgo
COPY . /go/src/whatever
RUN vgo install
...
Run Code Online (Sandbox Code Playgroud)

但是,如果您更改了go文件,则必须从该COPY层重建dockerfile .

简而言之,我想做的是:

...
RUN go get -u golang.org/x/vgo
COPY go.mod /go/src/whatever
RUN vgo install_dependencies
COPY . /go/src/whatever
RUN vgo install
...
Run Code Online (Sandbox Code Playgroud)

这样,如果我更改go.mod,将下载并重建所有依赖项,但除此之外,我们可以继续构建二进制文件.

我可以看到几种方法来获得这样的行为,但所有这些方法都有缺点:

  1. 我可以复制$GOPATH/src/mod到docker容器中,但是这将有很多我不需要的文件
  2. 我可以vgo mod -vendor在构建docker容器之前复制供应商目录,但这依赖于开发人员记住vgo mod -vendor每次go.mod更改时都要运行,否则应用程序将无法构建,他们必须vgo mod -vendor在重试docker构建之前运行.

你能想到一种方式让我获得像我想象中的行为vgo install_dependencies吗?我错过了一个vgo技巧吗?

go docker vgo

8
推荐指数
1
解决办法
3782
查看次数

我怎样才能坚持在Docker容器中使用1.11模块?

我正在将Go 1.10应用程序迁移到Go 1.11.这还包括从迁移depmod管理依赖项.

由于应用程序依赖于数据库,我使用a docker-compose来设置本地开发环境.使用Go 1.10,我只需将本地存储库(包括vendor文件夹)安装到容器中的正确位置GOPATH:

web:
  image: golang:1.10
  working_dir: /go/src/github.com/me/my-project
  volumes:
    - .:/go/src/github.com/me/my-project
  environment:
    - GOPATH=/go
    - PORT=9999
  command: go run cmd/my-project/main.go
Run Code Online (Sandbox Code Playgroud)

由于Go 1.11沟渠GOPATH(当使用模块时),我想我可以做以下事情:

web:
  image: golang:1.11rc2
  working_dir: /app
  volumes:
    - .:/app
  environment:
    - PORT=9999
  command: go run cmd/my-project/main.go
Run Code Online (Sandbox Code Playgroud)

这是有效的,但每次我docker-compose up(或任何其他命令调用Go工具)它将从头开始解析并重新下载依赖关系树.当我在容器外部运行命令时(即在我的本地操作系统上),这不会发生(而只是一次).

如何改进设置,以便Docker容器持久保存go工具下载的模块?

go docker docker-compose vgo go-modules

7
推荐指数
2
解决办法
1956
查看次数

如何解决导入本地Go模块的"无法找到路径X的模块"?

在我的Go项目中,我想将一些通用功能分解为Go模块,与主项目分开.我在GOPATH之外这样做是为了与go的未来保持一致.我不想在GitHub或其他任何地方发布模块.

我将此模块导入主项目的所有尝试都会导致:

cannot find module for path X
Run Code Online (Sandbox Code Playgroud)

我已经go mod init X在模块的文件夹中运行了.其go.mod文件的内容是:

module X
Run Code Online (Sandbox Code Playgroud)

构建或安装此模块似乎什么都不做.我没有发现它的迹象$GOPATH/pgk/mod.

我尝试了各种import语句:

救命!

go vgo

6
推荐指数
2
解决办法
2776
查看次数

Go Mod 私人回购

所以我有一个我的 main.go 导入的私人仓库。执行 go build 时出现此错误:

找不到路径的模块

我需要为私人回购做任何特别的事情吗?我一直在谷歌搜索,找不到任何好的信息。它与 dep 一起工作得很好。

go vgo

5
推荐指数
1
解决办法
7699
查看次数

在 Goland IDE 中导入本地 Go 模块

在内部导入(使用)go 模块的正确方法是什么?

例如:

通过以下方式创建新模块:go mod init example.com/my-project(example.com 或其他不存在的域)

并在同一个项目中使用它:

import (
    "example.com/my-project/package"
)
Run Code Online (Sandbox Code Playgroud)

此示例取自Let's Go书(但极其简化)

问题:

我正在使用 Goland,它无法识别此本地模块。Goland 建议我使用go get -t example.com/my-project/package命令。但example.com/...只是一个模块的名称

在此处输入图片说明

import go goland vgo go-modules

4
推荐指数
1
解决办法
1045
查看次数

标签 统计

go ×8

vgo ×8

go-modules ×3

docker ×2

docker-compose ×1

goland ×1

import ×1