PyPy3.8下安装scipy==1.8.0失败,求兼容解决方案
Scipy与PyPy的兼容性说明
Scipy对PyPy的支持是逐步推进的,你尝试的1.6.x到1.9.x版本在PyPy 3.8环境下没有官方预编译的二进制包(wheel),必须通过源码编译安装,但PyPy的编译依赖逻辑和CPython存在差异,这就是你接连遇到编译错误的核心原因。Scipy 1.10.0及以后的版本对PyPy支持更完善,部分版本提供了预编译wheel,安装流程更顺畅。
解决安装失败的具体步骤
1. 修复Python.h: No such file or directory错误
这个问题是因为缺少PyPy的开发头文件,不同系统的安装方式如下:
- Debian/Ubuntu类系统:安装
pypy3-dev包sudo apt-get install pypy3-dev - RedHat/CentOS类系统:安装
pypy3-devel包sudo dnf install pypy3-devel - macOS(使用Homebrew):重新安装pypy3即可自动带上开发文件
brew reinstall pypy3
2. 确认Fortran编译环境正常
安装gfortran后,先执行gfortran --version检查是否能正常调用。如果是macOS,建议通过Homebrew安装gcc(自带gfortran):
brew install gcc
3. 换用支持PyPy的Scipy版本
放弃1.6.x-1.9.x版本,直接安装Scipy 1.10.0及以上版本,这些版本提供了PyPy兼容的预编译wheel,无需源码编译:
pip install scipy>=1.10.0
如果必须使用旧版本,除了配置好上述开发环境,还要确保pip、setuptools、wheel为最新版本,然后强制源码编译:
pip install scipy==1.8.0 --no-binary :all:
不过这种方式编译耗时久,还可能触发其他依赖兼容问题,不推荐。
4. 替代方案:使用conda-forge安装(环境支持时)
如果你的环境支持conda,可以直接通过conda-forge安装适配PyPy的Scipy:
conda create -n pypy-scipy pypy=3.8 scipy -c conda-forge conda activate pypy-scipy
内容的提问来源于stack exchange,提问作者George Kaftanis
相关产品推荐
相关产品推荐

