Python 2.7 安装NumPy+;Python2.7中的SciPy现在失败了,原因是;运行时错误:Python版本>;=3.5“必需”;

Python 2.7 安装NumPy+;Python2.7中的SciPy现在失败了,原因是;运行时错误:Python版本>;=3.5“必需”;,python-2.7,numpy,scipy,pip,Python 2.7,Numpy,Scipy,Pip,像这样从源代码安装numpy和scipy(比如,在新的Python 2.7pyenv virtualenv): 让他们的安装程序使用指向my openblas安装的~/.numpy site.cfg文件 这曾经奏效。现在,它将生成一个以以下内容结尾的长堆栈跟踪: File "/usr/local/var/pyenv/versions/2.7.16/envs/issue/lib/python2.7/site-packages/setuptools/sandbox.py", line 4

像这样从源代码安装numpy和scipy(比如,在新的Python 2.7
pyenv virtualenv
):

让他们的安装程序使用指向my openblas安装的
~/.numpy site.cfg
文件

这曾经奏效。现在,它将生成一个以以下内容结尾的长堆栈跟踪:

      File "/usr/local/var/pyenv/versions/2.7.16/envs/issue/lib/python2.7/site-packages/setuptools/sandbox.py", line 45, in _execfile
        exec(code, globals, locals)
      File "/var/folders/_b/q30qg_l50b5gvqd8y4_wb9h00000gn/T/easy_install-o9MJ5E/numpy-1.17.1/setup.py", line 31, in <module>
        if sys.version_info[0] < 3:
    RuntimeError: Python version >= 3.5 required.
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
文件“/usr/local/var/pyenv/versions/2.7.16/envs/issue/lib/python2.7/site packages/setuptools/sandbox.py”,文件第45行
执行官(代码、全局、局部)
文件“/var/folders/_b/q30qg_l50b5gvqd8y4_wb9h00000gn/T/easy_install-o9MJ5E/numpy-1.17.1/setup.py”,第31行,在
如果系统版本信息[0]<3:
运行时错误:需要Python版本>=3.5。
----------------------------------------
错误:命令出错,退出状态为1:python setup.py egg_info检查日志以获得完整的命令输出。
什么改变了?
问:为什么在Python2.7安装中会说
Python版本>=3.5是必需的。

问:如何修复它?

scipy 1.0.1安装程序需要
numpy
作为先决条件,但是多个安装程序一起工作最终会得到
numpy
的最新版本,除非
numpy
已经存在

更改内容:最新版本的
numpy
需要Python 3.5+,因此会显示错误消息

因此,即使
pip
命令明确要求
install numpy==1.14.6 scipy==1.0.1
,它也会触发一个更新的
numpy
安装程序,在Python 2上失败。(堆栈跟踪中的最后一个条目显示需要Python 3的
numpy-1.17.1

问题出现在pip、scipy和numpy安装程序以及easy_安装程序之间的交互中。详情请参阅


解决方法:首先安装
numpy
。然后安装
scipy
。或者,如果您不需要
--no binary
选项,那么一行安装也可以工作。

这篇文章让我觉得更改requirements.txt中numpy和scipy的显示顺序就足够了。只有在我尝试instally numpy without requirements.txt时,我才发现scipy的真正问题,Docker安装程序中缺少BLAS dev文件。@cyrf从另一个项目中发现了这个问题,可能也是您遇到的问题:“如果您已经使用
pip
安装了
numpy
,请注意
pip v7+
正在缓存软件包安装,因此在任何安装后更改
blas
后端都无法按预期工作(例如,旧后端仍在使用)。确保使用新设置重新编译
numpy
,方法是使用
--no cache dir
“@cyrf我建议不要使用Alpine linux(在浪费了大量时间之后),因为它的
musl libc
得到的数学结果与
glibc
不同!(另外,当您构建的每个映像都添加了所需的linux包时,从较小的Docker基础映像开始所需的空间节省可能无法实现,而不是使用较大但共享的基础映像。)@Jerry101我想给你买一种你喜欢的饮料。谢谢!你的评论帮助我避免了一个令人讨厌的零除例外。@cyrf不客气!这里有一个新帖子警告更多的高山陷阱:……也更大,跑得更慢。
      File "/usr/local/var/pyenv/versions/2.7.16/envs/issue/lib/python2.7/site-packages/setuptools/sandbox.py", line 45, in _execfile
        exec(code, globals, locals)
      File "/var/folders/_b/q30qg_l50b5gvqd8y4_wb9h00000gn/T/easy_install-o9MJ5E/numpy-1.17.1/setup.py", line 31, in <module>
        if sys.version_info[0] < 3:
    RuntimeError: Python version >= 3.5 required.
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.