首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从外部模块调用Grpc ModuleNotFoundError :没有名为“recommendations_pb2”的模块

从外部模块调用Grpc ModuleNotFoundError :没有名为“recommendations_pb2”的模块
EN

Stack Overflow用户
提问于 2022-10-12 09:04:04
回答 1查看 61关注 0票数 0

我想要创建一个grpc项目,代码请检查这个链接:https://gitee.com/wen2204/test/tree/master

当我运行模块recommendations.py时,可以成功地运行它,不会出现错误。

但是,当我想通过recommendations.py ()从Main.py调用模块recommendations.serve时。“out:recommendations.py",第7行,在recommendations_pb2导入中( ModuleNotFoundError:没有名为'recommendations_pb2‘的模块--这很奇怪,似乎grpc代码不能停留在不能调用的子package.otherewise中。

文件夹结构:

  1. protobufsFolder

recommendations.proto

  • recommendationsFolder

recommendations_pb2_grpc.py

recommendations_pb2.py

recommendations.py

  • Main.py

recommendations.py 导出此文件是ok

代码语言:javascript
复制
from concurrent import futures
import random
import time

import grpc

from recommendations_pb2 import (
    BookCategory,
    BookRecommendation,
    RecommendationResponse,
)
import recommendations_pb2_grpc

books_by_category = {
    BookCategory.MYSTERY: [
        BookRecommendation(id=1, title="The Maltese Falcon"),
        BookRecommendation(id=2, title="Murder on the Orient Express"),
        BookRecommendation(id=3, title="The Hound of the Baskervilles"),
    ],
    BookCategory.SCIENCE_FICTION: [
        BookRecommendation(
            id=4, title="The Hitchhiker's Guide to the Galaxy"
        ),
        BookRecommendation(id=5, title="Ender's Game"),
        BookRecommendation(id=6, title="The Dune Chronicles"),
    ],
    BookCategory.SELF_HELP: [
        BookRecommendation(
            id=7, title="The 7 Habits of Highly Effective People"
        ),
        BookRecommendation(
            id=8, title="How to Win Friends and Influence People"
        ),
        BookRecommendation(id=9, title="Man's Search for Meaning"),
    ],
}

class RecommendationService(
    recommendations_pb2_grpc.RecommendationsServicer
):
    def Recommend(self, request, context):
        if request.category not in books_by_category:
            context.abort(grpc.StatusCode.NOT_FOUND, "Category not found")

        books_for_category = books_by_category[request.category]
        num_results = min(request.max_results, len(books_for_category))
        books_to_recommend = random.sample(
            books_for_category, num_results
        )

        return RecommendationResponse(recommendations=books_to_recommend)

def serve():
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    recommendations_pb2_grpc.add_RecommendationsServicer_to_server(
        RecommendationService(), server
    )
    server.add_insecure_port("[::]:50051")
    server.start()
    print('The server has started.....................')
    server.wait_for_termination()

if __name__ == "__main__":
    serve()

从该文件中导出的Main.py将引发错误

代码语言:javascript
复制
import recommendations.recommendations as recommendations
recommendations.serve()
EN

回答 1

Stack Overflow用户

发布于 2022-10-14 08:03:05

好的,目前,我必须将这些文件保存在同一级别的目录中。那么就不会有错误了。

-建议建议_PB2_grpc.py

-建议pb2.py

-建议.

-Main.py

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74039209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档