【问题标题】:Missing BZ2 module in pythonpython中缺少BZ2模块
【发布时间】:2017-07-19 21:16:04
【问题描述】:

python3.6中,执行以下命令时:

from sklearn.model_selection import GridSearchCV

报告的错误:

from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2'

但是,问题是我没有对机器的 root 访问权限,无法使用在 stackoverflow. 上发布的同一问题上的解决方案

在尝试定位 libbz2.so 时,我收到以下信息:

/usr/lib64/libbz2.so.1
/usr/lib64/libbz2.so.1.0.6

需要注意的是:在我的bash_profile 中,当我从源代码编译python3.6 时,LIBRARY_PATH 没有明确指定'/usr/lib64'。

【问题讨论】:

  • 旁注:使用虚拟环境,您应该能够毫无问题地安装那些非系统库(假设 venv 可用)。

标签: python python-3.x


【解决方案1】:

bz2是python的可选依赖,但是sklearn assumes your python installation has this module

至少有两种可能的方法来解决这个问题:

  1. 将您的 joblib 版本更新为 make its dependence on bz2 optional。 (Thanks to sascha 指出这一点。)
  2. 或者,install libbz2,然后重新编译python3.6。

【讨论】:

  • 从这个链接中的那个问题看来,安装新版本的 joblib (> 10/2016) 可能就足够了。
  • @unutbu:我添加了更多信息。你能评论一下吗?
  • @SuJK 我强烈建议首先采用方法 1(更新 joblib)。预见自己构建 python 的所有后果(如果它是一个全局安装,您可能会破坏系统依赖项)似乎很难。此外,您的非 root 访问权限也应该成为障碍。
  • @SuJK:如果您确实希望在 python 中启用 bz2,我相信这是 the way to do it(适用于 linux)。请务必阅读有关make clean 的评论。
  • @SuJK:您可能还需要传递 ./configure 一个选项来指定在哪里可以找到 libbz2。运行./configure --help 以找到正确的选项。
猜你喜欢
  • 2012-09-30
  • 2014-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
相关资源
最近更新 更多