簡體   English   中英

為什么在 Python 中導入自動生成的 gRPC 代碼時出現錯誤?

[英]Why do I get an error when importing my auto-generated gRPC code in Python?

我必須為一些 Python 應用程序編寫一個 RPC 服務。 我有一個名為solver.proto的 IDL 文件,並使用grpcio-tools模塊solver.proto生成了一些代碼。 這是最終的項目結構:

solver-service
  ├── main.py
  └── protos/
       ├── __init__.py       
       ├── __pycache__
       │     └── ... 
       ├── generate_pb.py
       ├── solver.proto
       ├── solver_pb2.py
       └── solver_pb2_grpc.py

我將我的 PYTHONPATH 設置為/abs/path/to/solver-service並且我嘗試從此目錄導入我自動生成的 gRPC 類,但點擊以下內容:

solver-service$ python3
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import protos.solver_pb2
>>> import protos.solver_pb2_grpc
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/abs/path/to/solver-service/protos/solver_pb2_grpc.py", line 4, in <module>
    import solver_pb2 as solver__pb2
ImportError: No module named 'solver_pb2'

因此,無論出於何種原因,我都可以成功導入protos.solver_pb2但由於某些相對路徑問題,解釋器抱怨導入protos.solver_pb2_grpc 調用所有在那里進行 gRPC 工作的 Python 開發人員——我如何使其工作?

我知道這是舊的,但通常你必須from . _grpc.py文件中導入之前。 solver_pb2_grpc 導入solver_pb2,但由於某種原因,PYTHONPATH 不檢查在python 中導出protos 的目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM