我有一个名为myPro s的库,看起来像这样
.
|-- proto
|---- hello.proto
|
|-- generated
└---- hello.pb.go
我有一个。外部调用的proto文件称为示例。应该导入hello的proto。协议
所以文件的顶部看起来像这样:
syntax = "proto3";
package example;
import "path/to/myProtos/proto/hello.proto"
现在,当我编译示例时。proto在示例中出现导入错误。pb。go因为它有导入行import“path/to/myProtos/proto/hello.pb.go”
我尝试添加两个导入路径,但出现“导入但未使用”错误。我还尝试进行相对导入,并将这两个目录作为标志传递给protoc,这很有效,但我需要go文件中的导入路径为绝对路径。
我如何告诉协议在go文件中路径是不同的?
在这种情况下,是否有更好的“最佳实践”?
使用生成的包 在你的<代码>你好。proto文件。
然后,protoc-I proto/proto/*。proto--go\u out=generated将生成一个hello。pb。按生成的包名转到生成的文件夹中。
proto文件中的包告诉protobuf生成器在生成的文件中使用哪个包。
对我有效的是定义选项go\u package=“github.com/
假设您具有所述的文件夹结构:
.
|-- proto
|---- hello.proto
|
|-- generated
└---- hello.pb.go
在您的情况下,您将添加选项go\u package=”
protoc -I. --go_out=$GOPATH ./*.proto
通常,我会在proto文件旁边生成go文件,以保持proto和go文件的导入路径相同。但这可能是口味问题。在这种情况下,您只需设置选项go_package="
在这两种情况下,
的相对导入。proto文件现在应该解析为在生成的Go代码和
中正确导入。pb。go
文件也应放入正确的go软件包文件夹中。
无法弄清楚为什么我得到一个文件未找到错误,当我运行一个协议命令来生成相关的go文件。 问题:在尝试从不同目录导入原型文件时,试图找出合适的原型命令是什么。我在GoLand中将原型路径设置为 结构 歌曲原型 Search.proto 创建文件: 错误:
问题内容: 我有一个名为“ ClassA”的Python类,另一个应该导入“ A ClassB”的ClassA的Python类。目录结构如下: 我将如何使用,以便ClassB可以使用ClassA? 问题答案: 您确实应该使用软件包。然后将MainDir放置在文件系统中sys.path上的某个点(例如… / site- packages)上,然后可以在ClassB中说: 您只需要在每个目录中放置命名
问题内容: 这是我正在使用的结构: 我想要做的就是在script.py中定义的类进口和。如果我做: 对于中定义的类,它工作正常。但是使用此解决方案时,如果在不同文件中定义了许多类,并且我想导入所有这些类,则必须为每个文件键入一行。必须有一个捷径。我试过了: 但这没有解决。 编辑 :这是文件的内容: 这是(按照Apalala的建议使用): 这是: 这是: 这是: 这是我尝试运行时得到的跟踪: 问题答
问题内容: 我有一个使用内置模块的Python脚本,但也导入了与主脚本本身位于同一目录中的许多自定义模块。 例如,我会打电话 和agent.py具有许多导入,包括: 其中checks与agent.py位于同一目录中的文件 当前工作目录为agent /时,一切都很好。但是,如果我从任何其他目录调用agent.py,则显然无法导入checks.py等错误。 我如何确保可以导入自定义模块,而不管从哪里调
我是protobuf的新手。遵循官方教程https://developers.google.com/protocol-buffers/docs/gotutorial,我下载了最新版本,并尝试运行示例 下的src,以便所需的包和。proto和proto位于同一目录下(由-I=src指定)。 然而,我想知道,如果有一个解决方案时。proto文件和其他要导入的包位于不同的目录下。
我使用scandir()来检查一个目录文件,它可以正确地使用来自root的路径,比如/dir 1/dir 2/......(dir 1不在我的. php文件后面,它是root中的一个文件夹) 但是当在相同的路径上使用is_dir和is_file时,它会输出错误的结果 我怎样才能解决这个问题?