缺少python bz2模块

Sat*_*ish 34 python linux bzip2

我已经安装在我的主目录中.

[spatel@~ dev1]$ /home/spatel/python-2.7.3/bin/python -V
Python 2.7.3
Run Code Online (Sandbox Code Playgroud)

我试图运行一个需要python 2.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
Run Code Online (Sandbox Code Playgroud)

我试图安装bz2模块,但我有很多错误

 [spatel@dev1 python-bz2-1.1]$ /home/spatel/python-2.7.3/bin/python setup.py install
    ...
    ...
    ...
    bz2.c:1765: error: âBZ_FINISH_OKâ undeclared (first use in this function)
    bz2.c:1765: warning: comparison between pointer and integer
    bz2.c:1771: error: âPyMemberDefâ has no member named âavail_outâ
    bz2.c:1778: error: âPyMemberDefâ has no member named ânext_outâ
    bz2.c:1778: error: âPyMemberDefâ has no member named âtotal_out_hi32â
    bz2.c:1778: error: âPyMemberDefâ has no member named âtotal_out_lo32â
    bz2.c:1778: error: invalid operands to binary +
    bz2.c:1778: warning: statement with no effect
    bz2.c:1779: error: âPyMemberDefâ has no member named âavail_outâ
    bz2.c:1779: error: âPyMemberDefâ has no member named ânext_outâ
    bz2.c:1779: error: invalid operands to binary -
    bz2.c:1779: error: invalid operands to binary -
    bz2.c:1779: warning: statement with no effect
    bz2.c:1783: error: âPyMemberDefâ has no member named âavail_outâ
    bz2.c:1784: error: âPyMemberDefâ has no member named âtotal_out_hi32â
    bz2.c:1784: error: âPyMemberDefâ has no member named âtotal_out_lo32â
    bz2.c:1784: warning: passing argument 2 of â_PyString_Resizeâ makes integer from pointer without a cast
    error: command 'gcc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)

jvi*_*tti 68

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

在Ubuntu/Debian上安装它们:

sudo apt-get install libbz2-dev
Run Code Online (Sandbox Code Playgroud)

Fedora的:

sudo yum install bzip2-devel 
Run Code Online (Sandbox Code Playgroud)

并再次构建python.你可能会注意到python在配置/构建时会检查很多库,如果你错过了其中的一些库,你可能会在你的案例中不支持像bz2这样的库.

你应该得到prebuild二进制文件来避免这种东西.Ubuntu 12.04包含python 2.7.3,这是您的脚本需要的版本.

  • Fedora包是bzip2-devel(至少从Fedora 14开始) (5认同)
  • 嘿,我在 rhel 7 上遇到这个问题。我已经安装了“yum install bzip2-devel”仍然有这个问题。 (2认同)
  • 这是行不通的。同样的问题。虽然我的是_bz2 (2认同)

小智 33

导入熊猫时,python 3.8.2 发生了这种情况: import pandas as 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/
Run Code Online (Sandbox Code Playgroud)

然后它工作得很好。

  • 这对我有用!我使用Python 3.7,所以我这样做了: `sudo cp /usr/lib/python3.7/lib-dynload/_bz2.cpython-37m-x86_64-linux-gnu.so /usr/local/lib/python3.7` (7认同)
  • 我在虚拟环境中 - 也必须这样做: ```sudo cp /usr/lib/python3.8/lib-dynload/_bz2.cpython-38-x86_64-linux-gnu.so /workspaces/demo_classification/ .venv/lib/python3.8/site-packages/``` (3认同)

Mit*_*ril 7

如果你在特定的位置安装python,只是安装libbz2-dev不起作用.

centos有一个解决方法:

python_install_path通常是/usr/local/lib/python2.7/,如果你有自定义的python路径,你需要替换它.

  • 我在 Python3 中,并得到错误:ImportError: dynamic module does not define module export function (PyInit_bz2) (2认同)

Jam*_*ang 6

在CentOS 7上,安装bzip2-devel:

sudo yum install  bzip2-devel
Run Code Online (Sandbox Code Playgroud)

然后重新编译python.


小智 6

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

这是我的解决方案:

  1. yum 安装 bzip2-devel。(或 apt-get)
  2. 下载 bzip2-1.0.6。制作 && 制作安装 ()
  3. 像这样构建Python3的_bz2.cpython:

python3的源代码文件夹下的vim run.sh:Python-3.xx

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
Run Code Online (Sandbox Code Playgroud)

您可以将前缀设置为与之前版本相同,这样就不会卸载您安装的任何软件包。在此之前,先创建一个备份文件夹。


use*_*932 6

就我而言,我在导入 pandas 时遇到了此错误。安装 python 3.9.1 解决了这个问题。

我最初的 python 版本是 3.8.6。我正在使用 PyEnv 并运行 MacOS Big Sur。

最初:

$ python
Python 3.8.6 (default, Nov 21 2020, 02:39:42)
[Clang 12.0.0 (clang-1200.0.32.27)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
Traceback (most recent call last):
...
    from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2'
Run Code Online (Sandbox Code Playgroud)

安装了Python 3.9.1:

$ pyenv install --list
$ pyenv install 3.9.1
$ pyenv local 3.9.1
$ pyenv global 3.9.1
$ pip install pandas
Run Code Online (Sandbox Code Playgroud)

再次运行:

$  python
Python 3.9.1 (default, Jul  5 2021, 22:26:09)
[Clang 12.0.5 (clang-1205.0.22.11)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
>>>
Run Code Online (Sandbox Code Playgroud)


haf*_*031 5

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

python3.7从以下位置下载文件: _bz2.cpython-37m-x86_64-linux-gnu.so

对于不同版本,python请尝试查找适合您的版本的此文件。说python3.8更改3738等并查找并下载文件。

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

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

sudo cp _bz2.cpython-37m-x86_64-linux-gnu.so /usr/local/lib/python3.7
Run Code Online (Sandbox Code Playgroud)

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

./configure --enable-optimizations
sudo make altinstall
Run Code Online (Sandbox Code Playgroud)


小智 5

我将其修复如下

\n
    \n
  1. # sudo find / -name \'*_bz2*\'
  2. \n
\n

搜索结果样本\xef\xbc\x9a

\n
\n

/usr/lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so

\n
\n
    \n
  1. # sudo cp /usr/lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so /usr/local/python3.8.5/lib/python3.8/lib-dynload
  2. \n
  3. sudo mv _bz2.cpython-36m-x86_64-linux-gnu.so _bz2.cpython-38-x86_64-linux-gnu.so
  4. \n
\n

如果你的 python 是3.7,你应该将文件名从 更改36m37m.

\n