- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我找不到从 main.go
中分解出一些代码的方法在 $GOPATH
之外使用 Go 模块(go 版本 >= 1.11)时进入本地包.
我没有导入任何需要包含到 go.mod
中的外部依赖项,我只是想在本地整理这个 Go 模块的源代码。
文件main.go
:
package main
// this import does not work
import "./stuff"
func main() {
stuff.PrintBaz()
}
文件./stuff/bar.go
(伪装成本地包):
package stuff
import "log"
type Bar struct {
Baz int
}
func PrintBaz() {
baz := Bar{42}
log.Printf("Bar struct: %v", baz)
}
文件go.mod
(命令 go mod init foo
):
module foo
go 1.12
执行go run main.go
时:
import "./stuff"
,然后我看到 build command-line-arguments: cannot find module for path _/home/<PATH_TO>/fooprj/stuff
.import "stuff"
,然后我看到 build command-line-arguments: cannot load stuff: cannot find module providing package stuff
.import stuff "./stuff"
使用包别名,然后我再次看到:build command-line-arguments: cannot find module for path _/home/<PATH_TO>/fooprj/stuff
.我找不到让本地包与 go 模块一起工作的方法。
go.mod
)中的其他 Go 代码中?最佳答案
最常见和最简单的方法是:
go.mod
,并且go.mod
文件放在存储库根目录中,然后go.mod
中 module
行中声明的模块路径
me.io/mymod
而不是使用基于 VCS 主机的导入路径,那么您将使用自定义导入路径而不是存储库名称你的 go.mod
)。例如,如果你的 repo 是 github.com/my/repo
,那么你将在 repo 根目录中放置一个 go.mod
,第一行阅读 module github.com/my/repo
。这可以通过 cd
'ing 到 repo root 并运行 go mod init github.com/my/repo
来创建。
遵循这一点可以帮助您在使用模块的过程中保持愉快的状态,并且可以避免多重微妙之处。
Russ Cox 在 #26664 中发表评论:
For all but power users, you probably want to adopt the usual convention that one repo = one module. It's important for long-term evolution of code storage options that a repo can contain multiple modules, but it's almost certainly not something you want to do by default.
"Multi-module Repositories" 中有更多关于多模块存储库的信息模块 wiki 上的常见问题解答部分。任何考虑改变上述建议的人都应该完整阅读该部分中的那 6 个左右的常见问题解答。
一旦你设置好你的 go.mod
,你就可以在包含 go.mod
的目录下面的目录中安排你的包,因为以及包含 go.mod
的目录中。关于如何在包中安排代码的三篇好文章:
这些文章是模块引入之前的经典文章,但其中的理念仍然适用于如何在模块中安排包。
当导入另一个带有模块的包时,您总是使用包括模块路径在内的完整路径。即使在同一个模块中导入另一个包也是如此。例如,如果一个模块在其 go.mod
中将其身份声明为模块 github.com/my/repo
,并且您拥有以下组织:
repo/
├── go.mod <<<<< Note go.mod is located in repo root
├── pkg1
│ └── pkg1.go
└── pkg2
└── pkg2.go
然后 pkg1
会将其对等包导入为 import "github.com/my/repo/pkg2"
。请注意,您不能使用相对导入路径,例如import "../pkg2"
或import "./subpkg"
。 (这是 OP 在上面使用 import "./stuff"
的一部分)。
Go 模块是相关 Go 包的集合,它们作为一个单元一起进行版本控制。模块记录精确的依赖需求并创建可重现的构建。
总结存储库、模块和包之间的关系:
package foo
语句声明自己的包。import "github.com/my/repo/pkg1"
。导入路径始终以该包的模块路径开头,无论该包是在同一模块还是不同模块中。关于go - 使用 Go 模块在包中组织本地代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55442878/
我使用这些 instructions 在 R 中制作了一个包.我使用 RStudio,我想向包中添加一个新功能。 我是否只是将函数放入 R 脚本并将其拖到名为 R 的包中的文件夹中?如果这样做,是否需
我正在 Rstudio 中构建我的 R 包,当我厌倦了创建包的小插图时遇到了一些意想不到的问题。当我在 Rstudio 中点击构建/加载面板时,出现小插图错误,同时创建了包的文档。为了可能解决我遇到的
我编写了一个 Delphi 包,其中两个组件使用我放置在 GraphContour.res 中的相同 PNG 资源。使用以下脚本创建文件: compile_res.bat: @brcc32 Graph
我有一个包含多个文件的目录,我想将这些文件包含在 Wix 项目构建的 msi 包中。 /database /database/migration11.txt /database/migration21
我想使用基于 git describe 命令的包版本。为此,我使用函数 get_version() 创建了 setup.py。此函数从 .version 文件中检索版本(如果存在),否则计算新的包版本
我创建了一个新的 django 应用程序并将其作为新包上传到 pypi。但是当我们将包安装到项目时,模板文件夹内的 html 文件没有显示。为什么会发生这种情况?下面还给出了 setup.py 文件(
我尝试执行这个 javascript 命令: document.querySelectorAll('div.Dashboard-section div.pure-u-1-1 span.ng-scope
我有(相当多的)静态文件需要与我的应用程序一起部署,该应用程序构建在遗留 .NET 库之上。其中包括几个 XML 和配置文件,以及一个 10 兆字节的只读数据库。 我看到的大多数论坛都指出实现此目的的
假设我有以下文件结构: +mypackage/ foo.m bar.m 如何向 help(mypackage) 的输出添加帮助? 在 python 中,我只是在 __init__.py 中添加
我正在尝试在 C# appx 包中包含数据文件或图像。我已尝试将文件添加到 csproj,并启用“复制到输出目录”,但它们不会出现在 AppXLayouts 目录中。 我在 dev.windows.c
我需要 Python 图像库中的 group4 解码,但为了构建它,我需要将一些更改放入发行版 libtiff-dev 包中。 以前从未做过这种事情,我很好奇从哪里开始。我需要在 libtiff 中进
我正在使用 AOSP,我想创建自己的库并在应用程序中使用它(来自 packages/app/)。我的图书馆只有一门课: import android.app.Fragment; import andr
是否可以在我的 apk 文件中添加一些存储程序版本、更新路径和其他有用数据的 XML 文件(注意:我指的不是 Android XML 文件)。我只想将该文件解压缩到本地数据文件夹的某个位置,我将使用它
问题 我想知道对于计划作为模块导入的 Python 目录的命名是否有标准约定。这意味着该目录包含一个空白的 __init__.py 背景 直到最近,我才很少考虑它,并且完全根据在文件系统级别有意义的内
我正在安装 git.install 的自定义版本包裹。我在 tools 目录中添加了一些额外的文件。 git.install tools file1 file2 choco
有没有办法为包中的示例 map 结构自动生成模板代码? 大多数软件包的根目录下都有一个/example 文件夹,用于展示软件包的功能。我不确定创建示例的“最佳”方式是什么,或者它是否重要。 我是否单独
我正在制作我的第一个 R 包,我正在尝试包含包依赖项。该软件包在我的机器上安装并运行良好,但我已经安装了所有依赖项。当另一个用户尝试安装并且他们没有安装所有依赖项时,他们会收到错误消息。 ERROR:
我正在尝试从以下网址的表格中抓取数据: http://www.nfpa.org/itemDetail.asp?categoryID=953&itemID=23033 问题是包含在 标签。当我使用以
我有一个 R我即将提交给 CRAN 的 GitHub 上的包。到目前为止,该包已经有一个广泛的 README.md 文档,其中显示: 包核心函数执行示例, 包演示执行示例, 一些基准测试结果。 供 G
我已经编写了供私有(private)使用的 Visual Studio 扩展。该软件包仍在开发中,但我想使用它并将其分发给我的同事。是否可以在 .vsix 包中包含调试符号 (.pdb)?与包编辑相比
我是一名优秀的程序员,十分优秀!