是否可以在pypy下安装scipy?

Posted

技术标签:

【中文标题】是否可以在pypy下安装scipy?【英文标题】:Is it possible to install scipy under pypy? 【发布时间】:2016-04-16 05:58:21 【问题描述】:

我用pypy创建了一个virtualenv并尝试安装scipy,但安装结束时出现以下错误:

distutils.errors.DistutilsError:安装脚本退出并出现错误:命令“cc -O2 -fPIC -Wimplicit -O2 -fPIC -Wimplicit -O2 -fPIC -Wimplicit -DHAVE_NPY_CONFIG_H=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE =1 -DNO_ATLAS_INFO=1 -DHAVE_CBLAS -Ibuild/src.linux-x86_64-3.2/numpy/core/src/private -Inumpy/core/include -Ibuild/src.linux-x86_64-3.2/numpy/core/include/numpy -Inumpy/core/src/private -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/home/luke/Programowanie/Python/connect4/venv-pypy/include -Ibuild/src.linux-x86_64-3.2/numpy/core/src/private -Ibuild/src.linux-x86_64-3.2/numpy/core /src/private -Ibuild/src.linux-x86_64-3.2/numpy/core/src/private -c numpy/core/src/multiarray/scalarapi.c -o build/temp.linux-x86_64-3.2/numpy/core /src/multiarray/scalarapi.o" 失败,退出状态为 1

有一个特定的numpy version suited for pypy,但我发现的关于 scipy 的唯一内容是一个旧的call for donations。从那以后有什么变化吗?

【问题讨论】:

scipy 已编译代码,就像 numpy 一样。所以即使你有一个 PyPy numpy 工作(它完全兼容吗?),这并不意味着你可以在它上面安装常规的scipy。如果您没有找到 PyPy scipy,则无法添加它。但请记住,scipy 是松散连接包的集合。 募捐呼吁是针对numpy proposal。该提案明确排除了scipy。换句话说,没有人正式开发scipy 版本。 @hpaulj 他们在文中稍后提到了 scipy:“具体来说,我们不打算(...)实现其他科学库,如 SciPy、matplotlib 或 biopython” 【参考方案1】:

是的,有可能,从Scipy 1.1.0 开始。然而,需要足够新的 PyPy (>= 6.0.0) 和 Numpy,numpy>= 1.14.3,最好在发布时 numpy>=1.15.0。安装可以通过通常的方式完成

pypy3 -mpip install numpy
pypy3 -mpip install scipy

假设你已经安装了 BLAS/LAPACK,所以首先你应该确保你能够从源代码在普通 Python 上安装 numpy/scipy。

可能没有人尝试过这是否适用于 Windows 上的 Pypy,所以你只能靠自己。它也可能不适用于 NumPyPy --- 你需要香草 Numpy。

其他答案说“不”,因为那是 2018 年 5 月之前的情况。

【讨论】:

从今天开始,您还必须安装 pybind11;但是,事情仍然因 pybind 错误而中断:/usr/local/include/detail/common.h:134:19: fatal error: cstddef: No such file or directory。【参考方案2】:

没有。 SciPy 有与 cpython 的 C API 对话的点点滴滴,而 pypy 不支持。

编辑:截至 2018 年 5 月,这是不正确的,并且 scipy 与 pypy 兼容。请参阅@pv 的答案。了解详情。

【讨论】:

自 scipy 1.1.0 以来不再适用。见光伏。评论。 现在,我认为这个答案应该被删除。也许你可以添加一个它不起作用的 pypy 版本?【参考方案3】:

似乎@piv.s 好答案中的链接不再包含所需的内容。 用于安装 BLAS/LAPACK 并避免在 Ubuntu 首次运行时出现 NotFoundError: no lapack/blas resources found 等安装错误:

sudo apt-get install libatlas-base-dev

然后使用与您的pypy(不是系统的)对应的pip

pip install numpy
pip install scipy

或 piv 提到的那个。会成功的。

【讨论】:

【参考方案4】:

不,但奇迹般地,matplotlib 恰好与 pypy 一起工作,无论是在 jupyter notebook 还是作为 standalone version(通过 wx 小部件)。

所以 并非不可能。

【讨论】:

【参考方案5】:

在撰写本文时,numpy 和 scipy 可以通过 pip 与 PyPy 一起安装,但有一个问题:如果您要在 virtualenv 中运行它(您可能应该这样做),请记住使用“-- always-copy”,否则 virtualenv 将为“include”目录创建一个符号链接,使其对用户只读,这将破坏 pybind11 的安装(这是 scipy 的依赖项)。

【讨论】:

以上是关于是否可以在pypy下安装scipy?的主要内容,如果未能解决你的问题,请参考以下文章

python3.5+win7 安装 numpy 和scipy的总结

安装numpy,scipy,gensim,jieba

python 安装numpy,scipy,matplotlib算法库

第一课 python的几种环境配置

在virtualenv中安装NumPy SciPy scikit-learn matplotlib

windows下安装python的numpy,scipy,sklearn