Я создал конвейер с Apache Beam на Python 2.7, который работает в потоке данных Google. Этот конвейер работает хорошо, когда я развертываю его локально со своего ноутбука. Я сейчас wi sh для его развертывания через CloudBuild. Это мой файл cloudbuild.yaml:
steps:
- name: "docker.io/library/python:2.7"
args: ["pip", "install", "-t", "/workspace/lib", "-r", "requirements.txt"]
- name: "docker.io/library/python:2.7"
args: ["python2", "tests.py"]
env: ["PYTHONPATH=/workspace/lib"]
Когда CloudBuild запускается, он успешно устанавливает все требования, но затем, когда он пытается импортировать apache_beam в файл tests.py, я получаю следующую ошибку :
File "tests.py", line 3, in <module>
import apache_beam as beam
File "/workspace/lib/apache_beam/__init__.py", line 97, in <module>
from apache_beam import coders
File "/workspace/lib/apache_beam/coders/__init__.py", line 19, in <module>
from apache_beam.coders.coders import *
File "/workspace/lib/apache_beam/coders/coders.py", line 29, in <module>
import google.protobuf.wrappers_pb2
ImportError: No module named google.protobuf.wrappers_pb2
В файле require.txt у меня есть среди прочего следующее:
apache-beam==2.16.0
protobuf==3.11.0
Примечание. Все необходимые требования перечислены в файле needs.txt. , поскольку я могу развернуть конвейер локально.