Резюме: некоторые локальные пакеты работают, а некоторые нет
Структура моего приложения луча:
-setup.py
-app/__init__.py
-app/main.py
-package1/__init__.py
-package1/one.py
-package2/__init__.py
-package2/two.py
-package3/__init__.py
-package3/three.py
В main.py:
from package1 import one
from package2 import two
from package3 import three
В настройках.py
import setuptools
setuptools.setup(
name='beam',
version='1.0',
install_requires=['apache-beam[gcp]',
'google-cloud==0.34.0',
'google-cloud-bigquery==0.25.0',
'requests==2.19.1',
'google-cloud-storage==1.12.0'
],
packages=setuptools.find_packages(),
)
При работе с использованием python -m app.main
:
С прямым бегуном (локальный запуск) никаких проблем.
С DataflowRunner (отправка в поток данных Gogole), У меня есть эта ошибка:
apache_beam.runners.dataflow.dataflow_runner.DataflowRuntimeException: сбой конвейера потока данных.Состояние: сбой, ошибка: обратная трассировка (последний вызов был последним): файл "/usr/local/lib/python2.7/dist-packages/dataflow_worker/batchworker.py", строка 642, в файле do_work work_executor.execute () "/usr/local/lib/python2.7/dist-packages/dataflow_worker/executor.py ", строка 156, в файле execute op.start ()" apache_beam / runners / worker / operations.py ", строка 344, в apache_beam.runners.worker.operations.DoOperation.start def start (self): Файл "apache_beam / runners / worker / operations.py", строка 345, в apache_beam.runners.worker.operations.DoOperation.start с self.scoped_start_state: файл"apache_beam / runners / worker / operations.py", строка 350, в файле apache_beam.runners.worker.operations.DoOperation.start pickler.loads (self.spec.serialized_fn)), файл "/usr/local/lib/python2.7/dist-packages/apache_beam/internal/pickler.py ", строка 244, в загрузках возвращает файл dill.loads (s)" /usr/local/lib/python2.7/dist-packages/dill/_dill.py ",строка 316, в нагрузках возврат загрузки (файл, игнорировать) Файл "/usr/local/lib/python2.7/dist-packages/dill / _dill.py ", строка 304, в файле загрузки obj = pik.load ()" /usr/lib/python2.7/pickle.py ", строка 864, в файле загрузки ключа загрузки" / usr / lib / python2.7 / pickle.py ", строка 1096, в файле load_global klass = self.find_class (модуль, имя) Файл" /usr/local/lib/python2.7/dist-packages/dill/_dill.py ", строка 465, вfind_class return StockUnpickler.find_class (self, module, name) Файл "/usr/lib/python2.7/pickle.py", строка 1130, в find_class import (module) ImportError: Нет модуля с именем три
Это "немного" расстраивает, потому что я дважды / трижды / ... проверяю разницу между этими пакетами, и они одинаковы.Sane __init__.py
file (пустой, без странных или скрытых символов в них).Такой же тип структуры в *.py
.Но по какой-то причине пакет 3 просто не хочет сотрудничать.
У кого-нибудь есть решение этой проблемы?
Спасибо.