ImportError:动态模块没有用docker定义模块导出函数



另一个人编写的crypto.so文件正在Python中使用。

在普通的centos桌面(gcc,gcc-c++一起使用(中使用它没有问题。

然而,即使在docker安装的centos中进行相同的操作,也会发生动态模块错误。

我无法检查so文件的内容。

为什么会出现此错误?

我没有安装一些必要的软件包吗?

(Python、路径和其他环境变量使用的完全相同。(

奇怪的是,第一次导入中有一个错误,但下一次导入中没有错误。(当然程序不起作用,因为它不是一个正常的导入(

>>> import crypto
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "lib/crypto.pyx", line 5, in init lib.crypto (./lib/crypto.c:2336)
ImportError: dynamic module does not define init function (initCrypto)
>>> import crypto
>>> 

此外,用dir检查模块,结果与正常导入不同。

# abnormal import
>>> dir(crypto)
['__builtins__', '__doc__', '__name__', '__package__', 'base64']
# normal import
['__builtins__', '__doc__', '__name__', '__package__', 'base64', '__file__', '__test__', 'AES', ...]
>>> 

我的码头组合yml

version: '3'
services:
smartta:
build:
context: .
dockerfile: ./Dockerfile
image: my_image
stdin_open: true
tty: true
container_name: my_container
volumes:
- ./my_project:/app/my_project
env_file:
- ./.env/.system
ports:
- "15001:15001"

我的码头文件

FROM centos:7
ENV LANG=en_US.UTF-8
ENV PATH="/root/anaconda3/bin:${PATH}"
ARG PATH="/root/anaconda3/bin:${PATH}"

RUN yum -y update 
&& yum -y install curl bzip2 gcc make gcc-c++ automake which python-devel 
&& yum -y groupinstall "development tools"
&& curl -sSL https://repo.anaconda.com/archive/Anaconda3-5.3.1-Linux-x86_64.sh -o /tmp/anaconda.sh 
&& bash /tmp/anaconda.sh -bf 
&& rm -rf /tmp/anaconda.sh 
&& conda install -y python=3 
&& conda update -n base -c defaults conda 
&& conda update --all 
&& conda clean --all --yes 
&& rpm -e --nodeps curl bzip2 
&& yum clean all 
&& conda create --name SmartTA python=2.7.13 -y 
&& conda init

... install requirements ...

COPY ./compose/start /start
RUN chmod +x /start
ENV LD_LIBRARY_PATH=/usr/local/lib

ENTRYPOINT ["/start"]

无论如何,我正在使用docker exec~~~/bin/bash 进行测试

因为docker centos 中没有包

安装在docker 内

docker exec -it my_containers_name /bin/bash

这将打开docker,她将看到中安装了什么

相关内容

  • 没有找到相关文章

最新更新