在Linux中加载共享库时出错; 使用docker和Python
我试图在我的Mac上的Linux虚拟机上的Linux机器上运行可执行文件。 要下载程序和所有相应的依赖关系等,我正在使用Docker。 要执行该程序,我正在运行一个python2.7脚本。
每次我尝试运行程序, emotion-processing
,我得到以下错误:
emotion-processing: error while loading shared libraries: libaffdex-native.so: cannot open shared object file: No such file or directory
我在Docker.worker文件中设置了一切:
RUN apt-get install -y --no-install-recommends libopencv-dev libcurl4-openssl-dev uuid-dev RUN mkdir $HOME/affdex-sdk RUN wget https://download.affectiva.com/linux/affdex-cpp-sdk-3.2-20-ubuntu-xenial-xerus-64bit.tar.gz RUN tar -xzvf affdex-cpp-sdk-3.2-20-ubuntu-xenial-xerus-64bit.tar.gz -C $HOME/affdex-sdk RUN wget https://github.com/path/to/emotion-processing?raw=true RUN mv emotion-processing?raw=true /usr/local/bin/emotion-processing RUN chmod +x /usr/local/bin/emotion-processing
然后,我将一个环境variables设置为缺失库的祖父文件夹。
ENV AFFECTIVA_SDK_FOLDER="$HOME/affdex-sdk"
之后,在我的python2.7文件中,我将"/lib"
连接到AFFECTIVA_SDK_FOLDER
。
affdex_sdk_lib_folder = os.environ.get("AFFECTIVA_SDK_FOLDER") + "/lib"
然后,我会在程序执行之前告诉程序库在哪里。
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/affdex-sdk/lib" emotion-processing
我通过查看这个堆栈溢出post得到了这个想法。 但是,唉,以任何方式设置LD_LIBRARY_PATH
似乎并不奏效。 我一直在看这里的其他职位,但似乎没有解决问题。 我试图避免重新编译。
提前感谢您的想法和build议。