【问题标题】:Why do I get: "--grpc_out: protoc-gen-grpc: The system cannot find the path specified." message?为什么我会得到:“--grpc_out: protoc-gen-grpc: 系统找不到指定的路径。”信息?
【发布时间】:2019-04-09 01:18:42
【问题描述】:

我正在关注这个C# Quickstart gRPC 教程。我来到了this step,在这里我必须使用以下命令来生成 gRPC 代码:

%UserProfile%\.nuget\packages\Grpc.Tools.1.15.0\tools\windows_x86\protoc.exe -I../../protos --csharp_out Greeter --grpc_out Greeter ../../protos/helloworld.proto --plugin=protoc-gen-grpc=%UserProfile%\.nuget\packages\packages\Grpc.Tools.1.15.0\tools\windows_x86\grpc_csharp_plugin.exe

它不起作用,运行上面的命令后我在终端中得到的是:

--grpc_out: protoc-gen-grpc: 系统找不到指定的路径。

我不知道为什么系统找不到路径,因为我在命令中更改了路径,使其指向需要执行的文件。

【问题讨论】:

  • protoc 本身不会生成文件。它启动子程序并将解析的文件传递给它们。 Afaict 它尝试执行protoc-gen-grpc,但在 PATH(包含用于搜索可执行文件的文件夹列表的系统环境变量)中找不到它。
  • 所以如果我在 PATH 中有它,如果我刚刚将 protoc-gen-grpc 输入到 cmd 中,我应该得到一些东西?因为目前我收到“找不到命令”消息。

标签: cmd grpc


【解决方案1】:

我考虑了迈克尔的回答。但是,使用不同的用户帐户不是一个选项,我无法重命名我的用户帐户,因为它是 Azure AD 用户,因此在 Windows 本地用户列表中没有条目,我将在其中更改其文件夹位置注册表。

为我解决此问题的解决方法是发送至change the location of the global packages folder

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,并且由于“找不到路径”这个错误以及您的名字也包含特殊字符,我怀疑非 ASCII 路径存在问题! 碰巧我的 Windows 用户名中有一个特殊字符“ë”

    您应该创建一个 github 问题,但这里有一些快速修复:

    这里有2个解决方案来解决这个问题

    1. 创建一个没有特殊字符的新用户并使用此帐户
    2. 更艰难和危险的道路,但我自己做了什么:重命名您的用户帐户以使用以下方法删除特殊字符https://winaero.com/blog/rename-user-profile-folder-windows-10/

    【讨论】:

    • 我在使用 Visual Studio 2019 和 Grpc.Tools 时遇到了同样的问题。原来问题出在我的用户名中的特殊字符,可能与 nuget 存储使用的包的位置有关(?)。
    【解决方案3】:

    您可以尝试将绝对路径传递给--plugin=protoc-gen-grpc=吗?

    【讨论】:

    • 感谢您的帮助。我试过了,它没有用,我想我应该按照你的建议做点别的。与此同时,我了解到我不会将 protobuf 用于我想做的事情。
    • 即使grpc_cpp_plugin.exe 在我的路径中,protoc 也需要它的绝对路径。
    猜你喜欢
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多