我有一个看起来像这样的包:
setup.py
requirements.txt
alphausblue/
api/
ripple/
org_pb2.py
org/
v1/
org_pb2_grpc.py
在 org_pb2_grpc.py 我有以下导入行:
from api.ripple import org_pb2 as api_dot_ripple_dot_org__pb2
我遇到的问题是,当我从alphausblue
目录内部导入时,导入工作正常。但是,当我从包中创建一个轮子时,将其上传到 Test PyPI,再次下载并尝试将其导入到这样的测试环境中:
>>> import alphausblue
>>> import alphausblue.org
>>> import alphausblue.org.v1
>>> import alphausblue.org.v1.org_pb2_grpc
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "\anaconda3\envs\test\lib\site-packages\alphausblue\org\v1\org_pb2_grpc.py", line 5, in <module>
from api.ripple import org_pb2 as api_dot_ripple_dot_org__pb2
ModuleNotFoundError: No module named 'api'
我得到上面的错误。我可以将代码从alphausblue/
to移动/
,然后导入工作,但我必须这样做org.v1.org_pb2_grpc
,这不是我想要的。看来这应该可行,所以我在这里缺少什么?
更新 这似乎是protoc如何生成 Python 代码的问题。我将在这里调查潜在的解决方案,看看我自己是否无法解决问题。