python - Pyenv 的 python 缺少 bzip2 模块

标签 python pyenv bzip2

我使用 pyenv 安装 python 3.8.2 并创建了一个 virtualenv。
在virtualenv中,我使用pipenv安装pandas .

但是,在导入 Pandas 时,我得到以下信息:

  [...]
  File "/home/luislhl/.pyenv/versions/poc-prefect/lib/python3.8/site-packages/pandas/io/common.py", line 3, in <module>
    import bz2
  File "/home/luislhl/.pyenv/versions/3.8.2/lib/python3.8/bz2.py", line 19, in <module>
    from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2'

经过一番谷歌搜索,我发现有人建议我在系统中安装 bzip2 库后从源代码重建 Python。

但是,在尝试使用 sudo dnf install bzip2-devel 安装它之后我看到我已经安装了它。

据我所知,pyenv 在安装某些版本时从源代码构建 python。
那么,为什么它在构建时不能包含 bzip2 模块呢?

如何使用 pyenv 重建 Python 以使 bzip2 可用?
我在 Fedora 30

提前致谢

更新
我尝试在详细模式下使用 pyenv 安装另一个版本的 python,以查看编译输出。

编译结束时有此消息:
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?

但正如我之前所说,我检查了我的系统中已经安装了 bzip2。所以我不知道该怎么办。

最佳答案

在 macOS Big Sur 上,要让 pyenv(通过 homebrew)工作,我必须通过 homebrew 安装 zlib 和 bzip2,然后在我的 ~/.zshrc 中添加导出(我猜是 ~/.bashrc 为 bash)。上面的答案by luislhl引领我的解决方案。

brew install zlib bzip2

#Add the following to your ~/.zshrc
# For pyenv to build
export LDFLAGS="-L/usr/local/opt/zlib/lib -L/usr/local/opt/bzip2/lib"
export CPPFLAGS="-I/usr/local/opt/zlib/include -I/usr/local/opt/bzip2/include"

# Then the install worked
pyenv install 3.7.9

关于python - Pyenv 的 python 缺少 bzip2 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60775172/

相关文章:

Apache Flink 的 BZip2 压缩输入

python - 没有 'class object' 的 getattr()

python - 在 Linux 上运行的 Python 脚本如何调用在 Wine 下运行的 Python 脚本中的例程?

python - pyenv:pip:找不到命令

pyenv - 使用 pyenv 在特定的 python 版本中运行单个命令

java - Java 中使用的最快且内存效率最高的 BZip2 解压工具是什么

gzip - bunzip/bzip2 整个目录而不是目录中的单个文件

python - 在一个范围内生成均匀分布的倍数/样本

python - 为什么这是类型错误而不是语法错误

python - pyenv activate 和 pyenv local 之间有区别吗?