[问题汇总]Python3解决ModuleNotFoundError: No module named ‘_bz2‘

问题起因:

        最近给公司做数据可视化项目改造,其中BI选型为Superset ,在Centos8上安装Superset V1.1.0做superset db upgrade初始化时遇到了这个错误,Python版本是3.9.1。

错误提示:

(SupersetPy39) [root@localhost bin]# superset db upgrade
Traceback (most recent call last):
    import bz2
  File "/opt/python39/lib/python3.9/bz2.py", line 18, in <module>
    from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2'

通常解决办法两种:

1)安装bzip2-devel(通常不行,看方法二且注意Python版本)

#检查是否安装bz2

(SupersetPy39) [root@localhost bin]# pip list | grep bz2

(SupersetPy39) [root@localhost bin]# yum install bzip2-devel
CentOS Linux 8 - AppStream                                    9.2 kB/s | 4.3 kB     00:00
CentOS Linux 8 - BaseOS                                       3.9 kB/s | 3.9 kB     00:00
CentOS Linux 8 - Extras                                       3.6 kB/s | 1.5 kB     00:00
CentOS Linux 8 - Extras                                        15 kB/s |  10 kB     00:00
Docker CE Stable - x86_64                                     6.1 kB/s | 3.5 kB     00:00
Docker CE Stable - x86_64                                      13 kB/s |  15 kB     00:01
软件包 bzip2-devel-1.0.6-26.el8.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!

#安装完,在Python源码目录下重新编译

(SupersetPy39) [root@localhost bin]# cd /tmp/Python-3.9.6/
(SupersetPy39) [root@localhost Python-3.9.6]# ./configure --prefix=/opt/python39 --with-ssl

(SupersetPy39) [root@localhost Python-3.9.6]# make && make install

2)已经安装了bzip2-devel,仍提示No module named '_bz2',此时注意Python版本

如果Python版本是3.7,<3.9

解决办法是:#查找_bz2.cpython-文件所在的目录,拷贝文件并改名到Python目录下(如果是Py3.7,改成37m;如果是Py3.5,改成35m)

# find / -name "*_bz2.cpython-*"

# cp /usr/lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so /您Python对应版本的目录下/lib-dynload/_bz2.cpython-3*m-x86_64-linux-gnu.so

我的Python版本是3.9,所以

解决办法是:#查找_bz2.cpython-文件所在的目录,拷贝文件并改名到Python目录下(改成39)

#拷贝改名(/usr/local/lib/python3.9/是我Python3.9系统目录,/opt/python39/lib/python3.9/是我Python3.9编译后的Python目录,/tmp/Python-3.9.6/是我Python3.9下载待编译的Python目录,怕麻烦所以都拷贝改名了)

(SupersetPy39) [root@localhost bin]# cp /usr/lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so /usr/local/lib/python3.9/lib-dynload/_bz2.cpython-39-x86_64-linux-gnu.so

(SupersetPy39) [root@localhost bin]# cp /usr/lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so /opt/python39/lib/python3.9/lib-dynload/_bz2.cpython-39-x86_64-linux-gnu.so

(SupersetPy39) [root@localhost bin]# cp /usr/lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so /tmp/Python-3.9.6/build/lib.linux-x86_64-3.9/_bz2.cpython-39-x86_64-linux-gnu.so

#检查拷贝文件名

(SupersetPy39) [root@localhost Python-3.9.6]# find / -name "*_bz2.cpython-39*"
/usr/local/lib/python3.9/test/__pycache__/test_bz2.cpython-39.pyc
/usr/local/lib/python3.9/test/__pycache__/test_bz2.cpython-39.opt-1.pyc
/usr/local/lib/python3.9/test/__pycache__/test_bz2.cpython-39.opt-2.pyc
/usr/local/lib/python3.9/lib-dynload/_bz2.cpython-39-x86_64-linux-gnu.so
/usr/local/lib/python3.9/_bz2.cpython-39-x86_64-linux-gnu.so
/opt/python39/lib/python3.9/test/__pycache__/test_bz2.cpython-39.pyc
/opt/python39/lib/python3.9/test/__pycache__/test_bz2.cpython-39.opt-1.pyc
/opt/python39/lib/python3.9/test/__pycache__/test_bz2.cpython-39.opt-2.pyc
/opt/python39/lib/python3.9/_bz2.cpython-39-x86_64-linux-gnu.so
/opt/python39/lib/python3.9/lib-dynload/_bz2.cpython-39-x86_64-linux-gnu.so
/tmp/Python-3.9.6/build/lib.linux-x86_64-3.9/_bz2.cpython-39-x86_64-linux-gnu.so

#重新编译Python3.9

#进入源码下载解压目录

(SupersetPy39) [root@localhost bin]# cd /tmp/Python-3.9.6/

#编译Python3.9
(SupersetPy39) [root@localhost Python-3.9.6]# ./configure --prefix=/opt/python39 --with-ssl

#安装Python3.9

(SupersetPy39) [root@localhost Python-3.9.6]# make && make install

#重新做superset db upgrade初始化,结果正常

(SupersetPy39) [root@localhost Python-3.9.6]# superset db upgrade

至此ModuleNotFoundError: No module named '_bz2'错误也没有提示。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 出现"ModuleNotFoundError: No module named _bz2"的错误是因为在使用Python时找不到_bz2模块。解决这个问题的方法有几种。一种方法是根据\[1\]的建议,需要在本地编译生成_bz2模块。另一种方法是根据\[2\]的建议,将Python3.6中的_bz2库拷贝到Python3.7下。还有一种可能是因为执行脚本时使用的Python路径不正确,可以根据\[3\]的建议创建一个链接将_bz2模块挂载到正确的路径下。具体操作可以参考上述引用内容中提供的链接和命令。 #### 引用[.reference_title] - *1* [ModuleNotFoundError: No module named _bz2](https://blog.csdn.net/weixin_42587961/article/details/105779549)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ModuleNotFoundError: No module named ‘_bz2问题解决](https://blog.csdn.net/u013685264/article/details/108274609)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ModuleNotFoundError: No module named ‘_bz2](https://blog.csdn.net/XCCCCZ/article/details/125646722)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值