缺少python bz2模块

缺少python bz2模块,python,linux,bzip2,Python,Linux,Bzip2,我已安装在我的主目录中 [spatel@~ dev1]$ /home/spatel/python-2.7.3/bin/python -V Python 2.7.3 我试图运行一个需要Python2.7.x版本的脚本,但我发现缺少bz2错误 [spatel@~ dev1]$ ./import_logs.py Traceback (most recent call last): File "./import_logs.py", line 13, in <module> im

我已安装在我的主目录中

[spatel@~ dev1]$ /home/spatel/python-2.7.3/bin/python -V
Python 2.7.3
我试图运行一个需要Python2.7.x版本的脚本,但我发现缺少bz2错误

[spatel@~ dev1]$ ./import_logs.py
Traceback (most recent call last):
  File "./import_logs.py", line 13, in <module>
    import bz2
ImportError: No module named bz2

当您从源代码构建python时,可能没有bz2头文件

在Ubuntu/Debian上安装它们:

sudo apt-get install libbz2-dev
软呢帽:

sudo yum install bzip2-devel 
然后再次构建python。 您可能会注意到,python在配置/构建时会检查许多库,如果您错过了其中一些库,那么您可能无法在您的案例中获得对像bz2这样的LIB的支持


您应该使用预构建二进制文件来避免这种情况。Ubuntu 12.04软件包,即脚本所需的版本。

您需要安装BZ2C库的开发版本。您可能没有,这就是为什么在构建python的用户副本时没有安装它。在Ubuntu上是libbz2开发包。它在软呢帽上的名字可能相同或相似。也可以从www.bzip.org下载。

在CentOS 7上,安装bzip2-devel:

sudo yum install  bzip2-devel

然后重新编译python。

您必须通过源代码重新安装
bzip2

  • yum安装bzip2-devel

  • wgethttp://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz

  • tar-zxvf bzip2-1.0.6.tar.gz

  • cd bzip2-1.0.6

  • make&&make-install

  • 配置并重新编译python

  • 这些步骤有时奏效


    最后,我已经解决了这个问题,它需要/usr/local/Python-3.5.2/lib/python3.5/lib dynload/_bz2.cpython-35m-x86_64-linux-gnu。所以,当我用源代码编译bzip2时,它一定有问题。我从另一个VM复制此文件以解决此问题。

    如果在特定位置安装python,只需安装
    libbz2 dev
    将无法工作

    centos有一个解决方案:

    • Centos 6

      sudo cp /usr/lib64/python2.6/lib-dynload/bz2.so /python_install_path/lib/python2.7
      
    • Centos 7

      sudo cp /usr/lib64/python2.7/lib-dynload/bz2.so /python_install_path/lib/python2.7
      

    python\u install\u path
    通常是
    /usr/local/lib/python2.7/
    ,如果您有自定义的python path,则需要替换它。

    我还应该在CentOS 6上添加它,确保您安装了
    bzip2 devel
    ,而不是
    bzip2 libs

    上述解决方案可以解决python2.7的bz2问题。但不是Python3.x 是的,您需要_bz2.cpython-3xm-x86_64-linux-gnu。因此,您应该在自己的环境中构建它

    以下是我的解决方案:

  • yum安装bzip2-devel。(或易于获得)
  • 下载bzip2-1.0.6。制作和制作安装(&M)
  • 像这样构建Python3的bz2.cpython:
  • python3源代码文件夹下的vim run.sh:Python-3.x.x

    export CFLAGS="-I/usr/include"
    export LDFLAGS="-L/usr/lib64"
    export LD_LIBRARY_PATH=/usr/lib64
    make distclean
    ./configure --prefix=/home/xxx/Python3 && make && make install
    

    您可以将前缀设置为与预版本相同的前缀,这将不会取消安装的任何软件包。在此之前,制作一个备份文件夹。

    这是我在CentOS上的解决方案:(步骤2-6可能会跳过)

  • sudo-yum安装bzip2-devel

  • 下载
    bzip2-1.0.6.tar.gz

  • tar-zxvf bzip2-1.0.6.tar.gz
  • cd bzip2-1.0.6
  • make&&make-install
  • 从下载文件并将其移动到
    /[您的python路径]/lib dynload/_bz2.cpython-35m-x86_64-linux-gnu.so
  • sudo ln-s`find/usr/lib64/-type f-name“libbz2.so.1*”`/usr/lib64/libbz2.so.1.0
    归功于

  • 在从不同位置安装
    Python
    时,我也会遇到这个问题(我在
    centos7
    上使用
    python3.7.5

    以下是我使其能够工作的步骤:

  • 导出环境变量
  • 下载并编译bzip2
  • wget/curl
    制作
    安装
    

    通过这样做,您不需要下载
    \u bz2.cpython-35m-x86\u 64-linux-gnu.so
    文件。

    在导入熊猫时,我在python 3.8.2中遇到了这种情况:
    将熊猫导入为pd

    导致一条以“错误:ModuleNotFoundError:没有名为“_bz2”的模块”结尾的长错误消息

    通过执行以下2个bash命令解决了此问题:

    sudo apt-get install libbz2-dev
    sudo cp /usr/lib/python3.8/lib-dynload/_bz2.cpython-38-x86_64-linux-gnu.so  /usr/local/lib/python3.8/
    

    然后它工作得很好

    发生这种情况是因为
    。因此
    文件丢失

    比如说python3.7从以下位置下载该文件:

    对于不同版本的
    python
    请尝试为您的版本查找此文件。比如说python3.8将
    37
    更改为
    38
    等,然后查找并下载该文件

    现在进入
    Ubuntu
    :使用
    sudo
    权限复制
    /usr/local/lib/python3.7
    文件夹中的文件

    要执行此操作,请转到下载文件的文件夹并执行命令(根据
    python
    版本相应更改文件名和目标文件夹):

    最后下载
    python
    ,解压缩zip文件,解压缩后配置并编译:

    ./configure --enable-optimizations
    sudo make altinstall
    

    这只发生在朱皮特为我进口熊猫的时候


    我的修复方法是将
    /usr/lib/python3.8/lib dynload
    (包括
    \u bz2.cpython-38-x86\u 64-linux-gnu.so
    )的内容复制到
    ~/.local/lib/python3.8/site packages/
    我在使用本地编译的python 3.6.9进行debian伸缩时也遇到了同样的问题 在/usr/local/lib/python3.6/lib-dynload/中,有一个_bz2.cpython-365m-x86_64-linux-gnu.so文件(请注意“365m”部分…) 我创建了这个库的符号链接,它解决了这个问题:

    sudo ln -s _bz2.cpython-365m-x86_64-linux-gnu.so _bz2.cpython-369m-x86_64-linux-gnu.so
    sudo ln -s _bz2.cpython-365m-x86_64-linux-gnu.so _bz2.cpython-36m-x86_64-linux-gnu.so
    

    我还得到了这个恼人的输出并修复了那个错误。我在
    python3.7
    3.8
    中得到了这个错误。我甚至没有远程服务器上的sudo权限,但我通过降级Python成功地修复了这个错误。安装
    Python3.6
    而不是3.7或3.8解决了这个问题。

    Fedora软件包是bzip2-devel(至少在Fedora 14之前),我必须安装所有这些来在CentOS6.4上构建一个正常工作的python2.7。yum安装-y bzip2-devel-zlib-zlib-devel-openssl-openssl-devel@Mithril在安装libbz2之后,我们需要重新编译python sitti
    wget/curl <bzip2_url>
    make
    make install
    
    sudo apt-get install libbz2-dev
    sudo cp /usr/lib/python3.8/lib-dynload/_bz2.cpython-38-x86_64-linux-gnu.so  /usr/local/lib/python3.8/
    
    sudo cp _bz2.cpython-37m-x86_64-linux-gnu.so /usr/local/lib/python3.7
    
    ./configure --enable-optimizations
    sudo make altinstall
    
    sudo ln -s _bz2.cpython-365m-x86_64-linux-gnu.so _bz2.cpython-369m-x86_64-linux-gnu.so
    sudo ln -s _bz2.cpython-365m-x86_64-linux-gnu.so _bz2.cpython-36m-x86_64-linux-gnu.so