【问题标题】:tarfile compressionerror bz2 module is not availabletarfile compressionerror bz2 模块不可用
【发布时间】:2016-07-28 20:45:11
【问题描述】:

我正在尝试安装twis​​ted 点安装https://pypi.python.org/packages/18/85/eb7af503356e933061bf1220033c3a85bad0dbc5035dfd9a97f1e900dfcb/Twisted-16.2.0.tar.bz2#md5=8b35a88d5f1a4bfd762a008968fddabf

这是针对 django-channels 项目的,我遇到了以下错误问题

Exception:
Traceback (most recent call last):
  File "/home/petarp/.virtualenvs/ErasmusCloneFromGitHub/lib/python3.5/tarfile.py", line 1655, in bz2open
    import bz2
  File "/usr/local/lib/python3.5/bz2.py", line 22, in <module>
    from _bz2 import BZ2Compressor, BZ2Decompressor
ImportError: No module named '_bz2'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/petarp/.virtualenvs/CloneFromGitHub/lib/python3.5/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/home/petarp/.virtualenvs/ErasmusCloneFromGitHub/lib/python3.5/site-packages/pip/commands/install.py", line 310, in run
    wb.build(autobuilding=True)
  File "/home/petarp/.virtualenvs/ErasmusCloneFromGitHub/lib/python3.5/site-packages/pip/wheel.py", line 750, in build
    self.requirement_set.prepare_files(self.finder)
  File "/home/petarp/.virtualenvs/ErasmusCloneFromGitHub/lib/python3.5/site-packages/pip/req/req_set.py", line 370, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File "/home/petarp/.virtualenvs/ErasmusCloneFromGitHub/lib/python3.5/site-packages/pip/req/req_set.py", line 587, in _prepare_file
    session=self.session, hashes=hashes)
  File "/home/petarp/.virtualenvs/ErasmusCloneFromGitHub/lib/python3.5/site-packages/pip/download.py", line 810, in unpack_url
    hashes=hashes
  File "/home/petarp/.virtualenvs/ErasmusCloneFromGitHub/lib/python3.5/site-packages/pip/download.py", line 653, in unpack_http_url
    unpack_file(from_path, location, content_type, link)
  File "/home/petarp/.virtualenvs/ErasmusCloneFromGitHub/lib/python3.5/site-packages/pip/utils/__init__.py", line 605, in unpack_file
    untar_file(filename, location)
  File "/home/petarp/.virtualenvs/ErasmusCloneFromGitHub/lib/python3.5/site-packages/pip/utils/__init__.py", line 538, in untar_file
    tar = tarfile.open(filename, mode)
  File "/home/petarp/.virtualenvs/ErasmusCloneFromGitHub/lib/python3.5/tarfile.py", line 1580, in open
    return func(name, filemode, fileobj, **kwargs)
  File "/home/petarp/.virtualenvs/ErasmusCloneFromGitHub/lib/python3.5/tarfile.py", line 1657, in bz2open
    raise CompressionError("bz2 module is not available")
tarfile.CompressionError: bz2 module is not available

显然我缺少bz2 模块,所以我尝试手动安装它,但对于python 3.5 没有成功,那么我该如何解决这个问题?

我按照@e4c5 的建议做了,但我是为python3.5.1 做的,输出是

➜  ~ python3.5                               
Python 3.5.1 (default, Apr 19 2016, 22:45:11) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import bz2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/bz2.py", line 22, in <module>
    from _bz2 import BZ2Compressor, BZ2Decompressor
ImportError: No module named '_bz2'
>>> 
[3]  + 18945 suspended  python3.5
➜  ~ dpkg -S /usr/local/lib/python3.5/bz2.py
dpkg-query: no path found matching pattern /usr/local/lib/python3.5/bz2.py

我在 Ubuntu 14.04 LTS 上,我已经从源代码安装了 python 3.5。

【问题讨论】:

  • 您是如何尝试手动安装的,没有成功是什么意思?
  • 可能是我表达的不好,手动的意思是我用sudo apt-get install libbz2-dev安装的,但那不是为python3.5安装的,我还是错过了这个当我在 python shell 中导入它时的模块

标签: python linux django python-3.x bz2


【解决方案1】:

在我的 python 3.4 安装中,import bz2 似乎没有任何问题。所以我做到了

import bz2
print (bz2.__file__)

发现它位于/usr/lib/python3.4/bz2.py 然后我做到了

dpkg -S /usr/lib/python3.4/bz2.py

这揭示了:

libpython3.4-stdlib:amd64: /usr/lib/python3.4/bz2.py

因此,以下命令有望解决此问题:

apt-get install libpython3.4-stdlib

更新:

如果你是从源码编译python 3.5,很有可能bz2没有编译进去,请先重新安装

./configure --with-libs='bzip' 

这同样适用于 python 3.6。请注意,这可能会抱怨其他缺少的依赖项。您将不得不一一安装缺少的依赖项,直到涵盖所有内容。

【讨论】:

  • 我已经编辑了我的问题,python 3.5 仍然有问题,是的,这适用于 3.4 版本,我上面有 bz2
  • 您的 Ubuntu 版本是什么(或您的发行版对应的 Ubuntu 版本)
  • 我使用的是 Ubuntu 14.04 tls
  • 但如果我没记错的话,那是 python 3.4 带来的。您的 python 3.5 安装过程是什么?
  • 我不太了解你,我已经从源代码安装了 python3.5,但是这个模块应该在 python3.5 中,它在 python3.4 中,并且文档涵盖了它@987654321 @
【解决方案2】:

我能够通过删除 _ 并将导入更改为

来解决它
from bz2 import BZ2Compressor, BZ2Decompressor

【讨论】:

    【解决方案3】:

    在 ubuntu 上,apt-get install libbz2-dev 然后再次编译 python。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 2012-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多