ImportError: Нет очереди с именем модуля - приложение Flask в Cloud Foundry
Я пытаюсь отправить приложение фляги (Python 3.5) в Cloud Foundry (CF). Приложение принимает запрос POST (текстовый файл) и возвращает сообщение. Работает локально (проверено через Почтальон). Тем не менее, при попытке подтолкнуть его к CF, он выдает ошибку -
ImportError: нет модуля с именем очереди
Вот мой код, который содержит очередь.
import queue as Queue
self._batch_queue = Queue.Queue(self.BATCH_QUEUE_MAX)
self._example_queue = Queue.Queue(self.BATCH_QUEUE_MAX * self._hps.batch_size)
Я попробовал решения, предложенные здесь, но ни один из них не решил мою проблему. Я думаю, что проблема в том, что у Python в CF нет пакета очереди. (Я могу ошибаться).
Любые идеи о том, как решить эту проблему, будут очень благодарны. Заранее спасибо!
1 ответ
Как упоминалось в комментариях @KlausD, похоже, что у вас установлена неправильная версия Python. В Cloud Foundry вы должны установить версию, включив файл с именем runtime.txt
в корне вашего проекта (т.е. в каталоге, из которого вы работаете cf push
).
https://docs.cloudfoundry.org/buildpacks/python/index.html
Этот файл используется, чтобы сообщить сборочному пакету Python, какую версию Python установить для вас. Предложения будут python-3.5.x
или же python-3.6.x
который установит последнюю версию 3.5 или 3.6. Вы можете указать точную версию как python-3.5.5
но это не рекомендуется, так как легко забыть обновить этот файл, когда выйдут новые версии Python.
Вы можете увидеть, какие версии Python поддерживаются пакетом сборки здесь.
https://buildpacks.cloudfoundry.org/
(Обратите внимание, что ссылка ведет на последнюю версию пакета сборки на момент написания этой статьи, она устареет. В будущем просто нажмите на самую последнюю версию пакета сборки, чтобы узнать, что поставляется с ней).