大家好,又见面了,我是你们的朋友全栈君。
更新:我回顾了之前的文章,发现直接插入文件虽然能解决报错,但可能还会缺少其他东西,治标不治本。安装Python时,我注意到有两种情况:
一种是bz2没有安装。Python3有_bz2和bz2,Python2只有bz2。bz2是系统底层模块,不是通过Python的pip安装的,需要在编译Python之前安装好。如果已经报错,则需要安装bz2后重新编译安装Python。实际上,在服务器上安装自己的Python时,可能会缺少很多模块,但这些不是Python组件的必要部分,因此它会列出(如下图所示)。虽然你完成了安装,但日后可能会留下隐患。bz2作为系统组件,需要root权限安装,在服务器环境下这样做不太合适。
因此,服务器上没有root权限的最直接方法是:
请使用Anaconda
立即学习“Python免费学习笔记(深入)”;
在安装Python时,Anaconda会配置好所有依赖,省事。
接着我尝试了:
在Python2下,有bz2没有_bz2
在Python3下,都有。
说实话,服务器没有root权限的情况下,还是Anaconda更方便。
在服务器上安装Python3.6.5,之前使用没有问题,今天使用matplotlib时出现了报错。
报错内容:
from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2'
我查看了很多常见的解决教程,但都不奏效,后来在Stack Overflow上发现了问题:
https://www.php.cn/link/1f422c75031b07a409aa665065fdc42b
在Linux下使用官方source release安装时会出现这个问题,而使用apt-get等方式则不会。
由于没有root权限,也无法使用yum,所以很多方法都不适用。直到我看到了这篇文章:
Linux下非Root用户解决ImportError: No module named bz2
简单来说,缺少一个文件,它不一定叫bz2.so,但大致是lib-dynload文件夹下的包含bz2的so文件,将其复制到自己的Python的同名文件夹下即可。
路径全称:…/python36/lib/python3.6/lib-dynload/
我找到的文件叫:_bz2.cpython-36m-x86_64-linux-gnu.so
其中的-36m是与版本对应的,也必须修改,例如Python3.5版本应该叫-35m。
分享这个文件,不知道哪天会失效:https://www.php.cn/link/3bc188adb791a56ccce03630b0d9f593
后记:我从服务器上的Python3.5中拿过来的,刚拿过来时不好用,文件名是bz2.cpython-36m-x86_64-linux-gnu.so,
我自己用的是Python3.6,看了一眼目录里都是-36m的,改了名字后发现好用了。使用其他版本的请对应修改文件名。
发布者:全栈程序员栈长,转载请注明出处:https://www.php.cn/link/ba6b5587aa7cfdb5ea922e018a419426
以上就是python解决 ModuleNotFoundError: No module named _bz2的详细内容,更多请关注php中文网其它相关文章!
python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号