【问题标题】:Use of internal package not allowed不允许使用内部包
【发布时间】:2022-01-26 23:48:23
【问题描述】:

我正在尝试构建和运行一个 repo (https://github.com/hyperledger/fabric/tree/master),但这个错误不断弹出,我仍然没有找到解决方案。

consensus.go:12:2: use of internal package github.com/hyperledger/fabric/internal/pkg/identity not allowed

这只是导致此错误的众多文件之一。 我很确定我做错了什么,因为这个 repo 应该是有效的。

Go 版本:

go version go1.13.5 linux/amd64

操作系统:Linux Mint 19.2 Cinnamon

【问题讨论】:

    标签: go go-build


    【解决方案1】:

    Internal packages(位于路径中有internal 文件夹的文件夹内的包)只能从以internal 文件夹的父级为根的包中导入。

    例如包pkg/foo/internal/bar 可以被包pkg/foo/internal/baz 导入,也可以从pkg/foo/baz 导入,但不能被包pkg 导入,也不能被pkg/bar 导入。这是设计使然。这太大了,复杂的包可以分解成更小的包,而不必暴露内部结构。

    您必须将内部包视为“私有”或“外部”不存在。

    查看相关:Can I develop a go package in multiple source directories?

    Command go: Internal Directories阅读更多关于内部包的信息。

    内部包是一个编译器限制。如果您想在自己的项目中公开它们(如果您想使用内部包),则必须删除 internal 文件夹,然后当然您还必须更改导入(导入路径)。

    【讨论】:

    • 感谢您的快速回复。由于不会移动我要构建的文件,因此据我了解,我应该更改 GOPATH src 文件夹,以便允许该库。我希望我是对的@icza。
    • @Tuan 内部包是编译器限制。如果要公开它们,则必须删除 internal 文件夹,然后当然还必须更改导入(导入路径)。
    【解决方案2】:

    更改 fyne.io/fyne/v2/internal/widget fyne.io/fyne/v2/widget

    只需从代码编辑器内的包路径中删除 /internal

    【讨论】:

    • 这个问题已经被回答并且相当老了。只有在对话中添加了某些内容(例如改变答案的新技术)时,您才应该发布额外的答案。
    猜你喜欢
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 2013-06-12
    • 2011-02-26
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    相关资源
    最近更新 更多