现象:利用docker部署python3.7 运行django结果莫名其妙的报了如下问题
说是没找到_bz2
该错误是缺失_bz2.cpython-36m-x86_64-linux-gnu.so这个os文件,处理步骤如下:
1)centos可以yum安装一下: yum install bzip2-devel
2)https://download.csdn.net/download/knockheart/20418132
3)将下载后的文件放自己python对应环境到文件夹里
特别注意!!这里文件名要匹配
如果你的python使用的是3.6 那么文件_bz2.cpython-36m-x86_64-linux-gnu.so
如果你的python使用的是3.7 那么文件_bz2.cpython-37m-x86_64-linux-gnu.so
例如:a) …/python36/lib/python3.6/lib-dynload/;
b) /usr/local/lib/python3.7/lib-dynload/;
……等等
4) 有权限要求别忘记授权使用"chmod +x _bz2.cpython-36m-x86_64-linux-gnu.so"增加该文件的可执行权限
5)普通操作以python3.7为例,目标路径根据自己实际情况
mv _bz2.cpython-36m-x86_64-linux-gnu.so _bz2.cpython-37m-x86_64-linux-gnu.so
cp _bz2.cpython-37m-x86_64-linux-gnu.so /usr/local/python3/lib/python3.7/lib-dynload/
5)本人是docker环境 操作如下,目标路径根据自己实际情况【python3替换成自己的容器名称】
mv _bz2.cpython-36m-x86_64-linux-gnu.so _bz2.cpython-37m-x86_64-linux-gnu.so
docker cp _bz2.cpython-37m-x86_64-linux-gnu.so python3:/usr/local/lib/python3.7/lib-dynload/
其他补充:
再次运行程序可能还会报错:ImportError: libbz2.so.1.0: cannot open shared object file: No such file or directory
1.首先需要使用sudo yum install -y bzip2* 确保系统已经安装了相关的库;
2.此时会发现在/usr/lib64目录下会发现其实有libbz2.so.1.0.6这样一个文件,我们只需要在该目录下使用命令
"sudo ln -s libbz2.so.1.0.6 libbz2.so.1.0"创建一个该文件的软连接。