NoneLibtensorflow .so: невозможно открыть общий объектный файл: нет такого файла или каталога

Я создал лямбда-слой AWS, используя следующую команду:

aws lambda publish-layer-version --layer-name TensorflowLambdaLayer --compatible-runtimes go1.x --zip-file fileb://tensorflowLayer.zip

Вот ARN, который был сгенерирован: `arn:aws:lambda:us-east-1:757767972066:layer:TensorflowLambdaLayer:1

Когда я пытаюсь запустить свою функцию Lambda, которая использует библиотеку Tesnroflow через AWS SAM, она застревает на этапе "монтирования":

2019-07-18 15:51:29 Mounting /tmp/tmpgz8cb80s as /var/task:ro,delegated inside runtime container

Как только я прекращаю это с Ctrl + C Я получаю следующее сообщение:

^C/var/task/bin/inference: error while loading shared libraries: libtensorflow.so: cannot open shared object file: No such file or directory
Makefile:82: recipe for target 'run-inference' failed

Вот важная часть моего template.yml:

Parameters:
  LambdaTensorflowLayerArn:
    Type: String
    Default: 'arn:aws:lambda:us-east-1:757767972066:layer:TensorflowLambdaLayer:1'
  LambdaFFMPEGLayerArn:
    Type: String
    Default: 'arn:aws:lambda:us-east-1:757767972066:layer:ffmpeg:1'

Inference:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: bin/inference
      Runtime: go1.x
      Timeout: 300
      CodeUri: ./bin/inference.zip
      Layers: 
         - Ref: LambdaFFMPEGLayerArn
         - Ref: LambdaTensorflowLayerArn

Я не уверен, что может быть причиной этого

1 ответ

У меня была такая же проблема с сообщением

ошибка при загрузке общих библиотек: libtensorflow.so.1: невозможно открыть файл общего объекта: нет такого файла или каталога

В моем случае он пытался использовать TensorFlow с go. Проблема в том, что официальная установка для libtensorflow.so (и libtensorflow_framework.so) не работает, если пакет оставлен в / usr / local (рекомендуется) или по другому пути. Использование ldconfig, как предложено для / usr / local, также не помогает. Кроме того, базовый пример для gcc не работает (даже с -L. Это меня удивило), пока не будет установлен LD_LIBRARY_PATH:

 $ gcc -I/usr/local/include -L/usr/local/lib hello_tf.c -ltensorflow -o hello_tf
 $ ./hello_tf 
 ./hello_tf: error while loading shared libraries: libtensorflow.so.1: cannot open shared object file: No such file or directory
 $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
 $ ./hello_tf 
 Hello from TensorFlow C library version 1.14.0
 $ unset LD_LIBRARY_PATH 
 $ ./hello_tf 
 ./hello_tf: error while loading shared libraries: libtensorflow.so.1: cannot open shared object file: No such file or directory

Это содержимое / usr / local в моем случае

 $ ll /usr/local/lib
 total 245424
 lrwxrwxrwx. 1 root root        28 dic 31  1999 libtensorflow_framework.so -> libtensorflow_framework.so.1
 lrwxrwxrwx. 1 root root        33 dic 31  1999 libtensorflow_framework.so.1 -> libtensorflow_framework.so.1.14.0
 -r-xr-xr-x. 1 root root  34748520 dic 31  1999 libtensorflow_framework.so.1.14.0
 lrwxrwxrwx. 1 root root        18 dic 31  1999 libtensorflow.so -> libtensorflow.so.1
 lrwxrwxrwx. 1 root root        23 dic 31  1999 libtensorflow.so.1 -> libtensorflow.so.1.14.0
 -r-xr-xr-x. 1 root root 216546752 dic 31  1999 libtensorflow.so.1.14.0

Другое решение состояло в том, чтобы вручную создать символические ссылки на / usr / lib. Я не знаю, как это сделать в конфигурации без сервера. Собирался написать это в комментарии, но все еще не хватает представителя.

Другие вопросы по тегам