0

我的 Python 项目中有以下结构:

main.py
sub1/
  __init__.py
  foo.py
  bar.py
  grpc_generated_pb2.py
  grpc_generated_pb2_grpc.py

我一直在使用以下方法来导入本地模块,例如,

(in sub1/foo.py)

from sub1 import bar
from sub1 import grpc_generated_pb2_grpc

有用。但是现在 gRPC 生成的文件执行以下操作:

(in sub1/grpc_generated_pb2_grpc.py)

import grpc_generated_pb2 as grpc_generated_pb2

Python 无法导入模块并出现此错误:

ModuleNotFoundError: No module named 'grpc_generated_pb2'

因为它是生成的代码,所以我不能/不应该修改它。我的问题是:为什么 Python 不能在不做的情况下导入同一目录下的本地模块from sub1

我认为 Python 应该始终能够使用简单的import <module_name>(没有父包名称)从同一目录导入本地模块。为什么不这样做?

更新:

正如其他人所指出的,已经有类似这样的问题:如何从 Python 3 中当前目录中的文件导入?. 但是,我的问题在这个意义上是不同的:

这是否意味着 Google gRPCgrpc_tools.protoc无法为 Python 3 生成工作文件?我正在添加 gRPC 标签,希望得到 gRPC 方面的意见。谢谢。

4

0 回答 0