大家好,又见面了,我是你们的朋友全栈君。
更新:我回顾了之前的文章,发现直接插入文件虽然能解决报错,但可能还会缺少其他东西,治标不治本。安装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'Python 3.14.3微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。
下载我查看了很多常见的解决教程,但都不奏效,后来在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的同名文件夹下即可。
路径全称:…/ python 36/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
