pypy3解释器安装streamlit时Failed building wheel for pyarrow报错
问题根因
报错和PyPy环境的适配性直接相关:
- 高版本pyarrow(11.0.0及以上)官方不再提供PyPy 7.3.x版本的预编译wheel包,pip默认拉取源码包本地编译,而网上大部分针对CPython的方案都是直接安装预编译wheel,完全不适配PyPy场景。
- 日志里报错的
/home/lungsang/Desktop/streamlit/.env/bin/cmake不是你系统安装的cmake二进制文件,是pip安装依赖时自动拉取的Python版cmake包装器的入口脚本,这个脚本在PyPy环境下安装不完整缺失模块,且虚拟环境PATH优先级高于系统路径,直接拦截了系统中正常可用的cmake命令,才触发找不到模块的报错。
分步解决操作
所有操作都在你创建的PyPy虚拟环境激活状态下执行:
- 第一步:清理虚拟环境内损坏的cmake包装脚本,执行命令:
pip uninstall -y cmake
执行完后可以输入which cmake验证,输出路径为/usr/bin/cmake即说明清理成功,后续编译会调用系统正常的cmake。 - 第二步:安装pyarrow编译需要的全量系统依赖(ubuntu22.04环境执行):
sudo apt update && sudo apt install -y build-essential cmake libboost-all-dev libprotobuf-dev protobuf-compiler libre2-dev libsnappy-dev zlib1g-dev - 第三步:安装经PyPy 7.3.9验证兼容的版本组合,不要直接装最新版streamlit,执行命令:
pip install --only-binary=:all: pyarrow==10.0.1 streamlit==1.18.1
其中--only-binary=:all:参数强制pip只安装预编译wheel包,禁止源码编译,pyarrow 10.0.1是最后一个提供PyPy 7.3.x预编译wheel的稳定版本,streamlit 1.18.1是和该版本pyarrow完全兼容、无额外依赖冲突的稳定版本。 - 第四步:安装完成后执行
streamlit hello验证,能正常拉起本地demo服务即安装成功。
注意事项
不要尝试在PyPy 7.3.x环境下安装pyarrow 11.0.0及以上版本,这类版本无官方适配PyPy的预编译包,本地编译需要手动修改大量编译参数,兼容性问题极多,没有实际折腾价值。
内容的提问来源于stack exchange,提问作者lungsang
相关产品推荐
相关产品推荐

