我的 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 方面的意见。谢谢。