El motor de aplicación de Google implementa la aplicación de flask – ImportError: libSM.so.6: no se puede abrir el archivo de objeto compartido: no existe tal archivo o directorio

Estoy intentando desplegar una aplicación de flask de python en Google Cloud. Una vez que la aplicación comienza a ejecutarse, aparece el siguiente error:

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

Investigando el problema, descubrí que este parece ser un problema relacionado con opencv-python y la siguiente línea debería solucionar el problema en Linux:

 sudo apt-get install libsm6 

Sin embargo, ya que estoy usando Mac, no puedo usar apt-get para instalar libsm6 localmente y estoy implementando usando un archivo Requirements.txt que no acepta apt-get. Intenté SSH en la instancia en ejecución en la nube de Google, sin embargo, tampoco acepta apt-get install libsm6, y me dice que carezco de derechos de administrador:

 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? 

Cambiar el directorio a la raíz tampoco ayudó. ¿Alguien sabe cómo arreglar esto?

También he probado la versión 3.5 y 3.4 de python sin suerte.

Ya que está utilizando el entorno flexible, puede crear un tiempo de ejecución personalizado basado en la imagen acoplable suministrada por google correspondiente en la que agrega las dependencias adicionales que requiere su aplicación. De Acerca de los tiempos de ejecución personalizados :

Los tiempos de ejecución personalizados le permiten definir nuevos entornos de tiempo de ejecución, que pueden incluir componentes adicionales como intérpretes de idiomas o servidores de aplicaciones.

Consulte también Creación de tiempos de ejecución personalizados .

A partir de esta información, asumo que no está utilizando un entorno virtual. Si Google Cloud le da este error, es porque el paquete de python al que hace referencia no está instalado en / lib de su proyecto. Si sigue esta guía de inicio , notará que primero le aconseja crear un entorno virtual y luego usar el archivo Requirements.txt para replicar básicamente ese entorno exacto en Google Apps, de ahí la

 pip install -t lib -r requirements.txt 

Mi consejo es seguir atentamente el ejemplo de inicio y el ejemplo de github y notar las diferencias en términos de instalación de pip en la carpeta lib.

Actualización : Mirando más de cerca el seguimiento de la stack, el problema parece originarse en la biblioteca cv2 dependiendo de libSM.so.6, que es una biblioteca de C. Google App Engine es muy delicado con respecto a las bibliotecas de C en proyectos python.

La sugerencia es intentar usar una biblioteca alternativa para lo que sea que haga cv2, una biblioteca que sea Python puro.