另一个人编写的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,她将看到中安装了什么