import: No module named '_bz2'

1.不能導入xx包/模塊

eg:

  • pandas 不能導入bz2
No module named '_bz2'

bz2的官方描述.

官方bz2庫的描述

此模塊提供了使用bzip2壓縮算法壓縮和解壓數據的一

2.python層面分析不能導入的本質原因

import 順序

  • built-in
  • 當前路徑(.)
  • 標準庫(sys.path)

查看bz2模塊所在的當前python中的路徑

In [1]: import bz2  
In [2]: import inspect 
In [3]: inspect.getsourcefile(bz2)
Out[3]: '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/bz2.py'

在導入bz2模塊的時候,bz2.py導入了_bz2模塊, 觸發了導入異常

from builtins import open as _builtin_open
import io
import os
import _compression
from threading import RLock

# 從_bz2模塊中導入BZ2Compressor, BZ2Decompressor
from _bz2 import BZ2Compressor, BZ2Decompressor
# ...

bz2(標準庫)->_bz2(內建庫, 和python解釋器打包在一起)

到此爲止,我們就明白了,不能導入_bz2的原因是python解釋器的內建模塊沒有支持bz2

所以解決思路是:

  • 安裝bzip2相關的包.
  • 重新源碼編譯cpython. (在configure的過程中,會根據機器是否安裝了bzip2來開啓_bz2模塊)

1.安裝bzip2

#安裝 bzip2 相關的包
yum -y install bzip2 bzip2-devel

2.重新編譯python

參考

神奇的解決辦法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章