Механизм приложения Google развернул приложение фляги - ImportError: libSM.so.6: невозможно открыть файл общего объекта: такого файла или каталога нет - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь развернуть приложение с флягой Python в облаке Google. После запуска приложения появляется следующая ошибка:

  File "/home/vmagent/app/app.py", line 11, in <module>
    import cv2
  File "/env/lib/python3.4/site-packages/cv2/__init__.py", line 9, in <module>
    from .cv2 import *
ImportError: libSM.so.6: cannot open shared object file: No such file or directory

Проведя некоторое исследование этой проблемы, я выяснил, что это, похоже, проблема, связанная с opencv-python, и следующая строка должна решить проблему в linux:

sudo apt-get install libsm6

Однако, поскольку я использую Mac, я не могу использовать apt-get для локальной установки libsm6, и, поскольку я развертываю с использованием файла require.txt, который не принимает apt-get, я застрял, исправляя это. Я попытался использовать SSH в работающем экземпляре в облаке Google, однако он также не принимает apt-get install libsm6, сообщая, что у меня нет прав администратора:

E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

Смена каталога на root тоже не помогла. Кто-нибудь знает как это исправить?

Я также попробовал Python версии 3.5 и 3.4 без удачи.

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Поскольку вы используете гибкую среду, вы можете создать настраиваемую среду выполнения на основе соответствующего предоставленного Google образа Docker, в который вы добавляете дополнительные зависимости, необходимые для вашего приложения. От О пользовательских средах выполнения :

Пользовательские среды выполнения позволяют вам определять новые среды выполнения, которые может включать в себя дополнительные компоненты, такие как переводчики языка или серверы приложений.

См. Также Создание пользовательских сред выполнения .

0 голосов
/ 01 мая 2018

Из этой информации я предполагаю, что вы не используете виртуальную среду. Если Google Cloud выдает эту ошибку, это связано с тем, что пакет python, на который вы ссылаетесь, не установлен в / lib вашего проекта. Если вы будете следовать этому Руководству по началу работы , вы заметите, что оно советует сначала создать виртуальную среду, а затем использовать файл needs.txt, чтобы в основном воспроизвести эту точную среду в Службах Google, следовательно,

pip install -t lib -r requirements.txt

Я советую внимательно следить за началом работы и примером github и заметить различия с точки зрения установки pip в папке lib.

Обновление : Если присмотреться к трассировке стека, кажется, что проблема возникает из библиотеки cv2 в зависимости от libSM.so.6, который является библиотекой C. Google App Engine очень требователен к библиотекам C в проектах Python.

Предлагаем попробовать использовать альтернативную библиотеку для всего, что делает cv2, библиотеку на чистом Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...