Pyenv的python缺少bzip2模块

2024-04-19 02:59:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pyenv安装了python3.8.2并创建了一个virtualenv。 在virtualenv中,我使用pipenv安装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可用? 我戴着软呢帽

提前谢谢

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

在汇编的最后有这样一条信息:

WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?

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


Tags: inpy信息pyenvpandashomevirtualenvlib
3条回答

在macOS Big Sur上,为了让pyenv(通过自制)正常工作,我必须通过自制安装zlib和bzip2,然后将导出添加到我的~/.zshrc中(我猜是bash的~/.bashrc)。上面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

谢谢,这很有帮助,只是在~/.zshrc中做了一些小修改:

export LDFLAGS="-L/opt/homebrew/opt/zlib/lib -L/opt/homebrew/opt/bzip2/lib"
export CPPFLAGS="-I/opt/homebrew/opt/zlib/include -I/opt/homebrew/opt/bzip2/include"

然后pyenv install 3.7.9


Apple M1macOS 11.1 20C69 arm64

➜ brew  version           
Homebrew 2.7.1
Homebrew/homebrew-core (git revision ad6fd8; last commit 2021-01-05)
Homebrew/homebrew-cask (git revision 5c3de; last commit 2021-01-04)

但这对M1:No module named '_ctypes'没有帮助

好的,过了一段时间我找到了解决办法。这很简单,但我花了一些时间才意识到这一点

原来问题是我安装的bzip2-devel是32位版本

编译过程正在查找64位,但未找到它。 因此,我必须专门安装64位版本:

sudo dnf install bzip2-devel-1.0.6-29.fc30.x86_64

相关问题 更多 >