Правила прототипа Bazel Python, переопределяющие модуль «google»
Я столкнулся с проблемой с прото-правилами, предоставляемыми Rules_python. Я считаю, что добавление прототипов, использующих py_proto_library, затмит модуль «google», в результате чего соответствующие зависимости PIP не смогут быть найдены.
Чтобы продемонстрировать это, я создал репозиторий с простым примером .В этом примере, пока я не включаю зависимости proto(py_proto_library), мое приложение может правильно найти модули google.protobuf и google.auth. Однако, как только я добавлю зависимость от прототипа, я столкнусь с этой проблемой:
Код приложения прост:
import google
print(google.__file__)
import google.protobuf
print(google.protobuf.__file__)
import google.auth
print(google.auth.__file__)
Если у меня есть зависимость от прототипа, я получаю эту ошибку:
Traceback (most recent call last):
File "/home/ubuntu/.cache/bazel/_bazel_ubuntu/7e6ecf527bf713b1567f15e2f26950b5/execroot/__main__/bazel-out/k8-fastbuild/bin/app.runfiles/__main__/app.py", line 5, in <module>
import google.auth
ModuleNotFoundError: No module named 'google.auth'
Если у меня нет зависимостей прототипа, модуль Google находится в
.../pypi_google_auth/site-packages/google/__init__.py
Если я переключусь на включение прототипа, модуль Google будет:
.../com_github_protocolbuffers_protobuf/python/google/__init__.py
Как я могу продолжать использовать proto, но при этом сделать доступным google.auth? Спасибо!
ОБНОВЛЕНИЕ: мне удалось определить виновника этого изменения и проверить его с помощью патча . Я до сих пор не понимаю, почему это является причиной, потрачу на это некоторое время.