如何在64位Windows系统上安装SciPy?

65

我该如何在我的系统上安装SciPy?

对于SciPy的依赖库NumPy部分,实际上有一个64位Windows的安装程序:numpy-1.3.0.win-amd64-py2.6.msi(是直接下载URL,大小为2310144个字节)。

运行SciPy超级包安装程序会在对话框中显示以下消息:

无法安装。需要Python版本2.6,但在注册表中未找到。

我已经安装了Python 2.6.2(并且在其中拥有可用的Django安装),但我不知道任何关于注册表的故事。

注册表条目似乎已经存在:

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Python]

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore]

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6]

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\Help]

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\Help\Main Python Documentation]
@="D:\\Python262\\Doc\\python262.chm"

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath]
@="D:\\Python262\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath\InstallGroup]
@="Python 2.6"

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\Modules]

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\PythonPath]
@="D:\\Python262\\Lib;D:\\Python262\\DLLs;D:\\Python262\\Lib\\lib-tk"

我所做的:

步骤 1

下载了NumPy超级包安装程序numpy-1.3.0rc2-win32-superpack-python2.6.exe (直接下载链接, 4782592字节)。运行此安装程序会出现错误消息 "无法安装。需要Python版本2.6,但在注册表中找不到。"。 更新:实际上有一种可行的NumPy安装程序 - 请参见问题开头。

步骤 2

尝试以另一种方式安装NumPy。下载了zip压缩包numpy-1.3.0rc2.zip (直接下载链接, 2404011字节), 将zip文件正常解压到临时目录D:\temp7\numpy-1.3.0rc2(其中包含setup.py和README.txt)。然后打开命令行窗口并执行:

d:
cd D:\temp7\numpy-1.3.0rc2
setup.py install

这个运行了很长时间,还包括使用 cl.exe(Visual Studio 的一部分)。以下是一个近 5000 行的记录(230 KB)。

看起来这个好像可以工作。我现在可以在 Python 中这样做:

import numpy as np
np.random.random(10)

得到了这个结果:

array([ 0.35667511,  0.56099423,  0.38423629,  0.09733172,  0.81560421,
        0.18813222,  0.10566666,  0.84968066,  0.79472597,  0.30997724])

第三步

下载了SciPy的超级包安装程序,scipy-0.7.1rc3- win32-superpack-python2.6.exe (直接下载链接, 45597175 字节)。运行此安装程序会导致在开始时列出的消息。

第四步

尝试以另一种方式安装SciPy。 下载zip软件包scipy-0.7.1rc3.zip (直接下载链接, 5506562字节),将zip文件以普通方式解压缩到临时目录D:\ temp7 \ scipy-0.7.1(其中setup.py和README.txt在其中)。 然后我打开了一个命令行窗口并执行以下操作:

d:
cd D:\temp7\scipy-0.7.1
setup.py install

这并没有取得多大成效 - 这里有一个记录(大约95行)。

但它失败了:

>>> import scipy as sp2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named scipy

平台:Python 2.6.2已安装在D:\Python262目录下,操作系统为Windows XP 64位SP2,内存为8GB,已安装Visual Studio 2008专业版。

安装的Python的启动界面如下:

Python 2.6.2 (r262:71605, Apr 14 2009, 22:46:50) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

从命令行窗口使用SET命令设置的PATH的值:

Path=D:\Perl64\site\bin;D:\Perl64\bin;C:\Program Files (x86)\PC Connectivity Solution\;D:\Perl\site\bin;D:\Perl\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;d:\Program Files (x86)\WinSCP\;D:\MassLynx\;D:\Program Files (x86)\Analyst\bin;d:\Python262;d:\Python262\Scripts;D:\Program Files (x86)\TortoiseSVN\bin;D:\Program Files\TortoiseSVN\bin;C:\WINDOWS\system32\WindowsPowerShell\v1.0;D:\Program Files (x86)\IDM Computer Solutions\UltraEdit\

这里有很多其他的包:http://www.lfd.uci.edu/~gohlke/pythonlibs/,但我没有看到一个名为“SciPy”的包。我看到了“ScientificPython”和SciPy子包,但没有SciPy本身。这是否意味着它仍然在3个月后不可用,还是我漏掉了什么? - endolith
@endolith https://pypi.python.org/pypi/scipy/0.7.0 - Inversus
@Inversus: http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy - endolith
16个回答

63

非官方的64位安装程序可在以下网址下载 http://www.lfd.uci.edu/~gohlke/pythonlibs/,包括NumPySciPy

请确保下载并安装与您的CPython版本和位数相匹配的软件包(也称为“wheels”)(即cp35 = Python v3.5; win_amd64 = x86_64)。

您应该首先安装NumPy。如需进行系统范围(即Program Files)的安装,请以管理员特权运行CMD提示符:

C:\>pip install numpy‑<version>+mkl‑cp<ver-spec>‑cp<ver-spec>m‑<cpu-build>.whl

或者,在非管理员CMD提示符下,包含--user标志以将其安装到当前用户的应用程序文件夹中(通常为Windows上的 %APPDATA%\Python):

C:\>pip install --user numpy‑<version>+mkl‑cp<ver-spec>‑cp<ver-spec>m‑<cpu-build>.whl

然后对SciPy做同样的操作:

C:\>pip install [--user] scipy‑<version>‑cp<ver-spec>‑cp<ver-spec>m‑<cpu-build>.whl

如果你复制粘贴这些示例,请不要忘记适当地更换<version><ver-spec><cpu-build>。同时,你必须使用来自ifd.uci.edu链接的numpy和scipy包(否则,如果你尝试混合和匹配不兼容的包,你会收到错误信息--请先卸载任何冲突的包[例如:pip list])。


32

简短回答:目前仍在开发中,Windows 64位支持还在进行中。超级包肯定无法在64位Python上运行(但它应该可以在32位Python上运行,甚至在Windows 64位上也可以)。

Windows 64位的主要问题是,使用mingw-w64构建目前不稳定:可能是我们(NumPy开发人员)的问题、Python的问题或mingw-w64的问题。最有可能是这些问题的综合。因此,您必须使用专有编译器:除了微软编译器以外的任何其他编译器都会随机崩溃NumPy;对于Fortran编译器,ifort是应该使用的编译器。截至今天,无论是NumPy还是SciPy源代码都可以使用Visual Studio 2008和ifort编译(所有测试都通过了),但构建仍然相当麻烦,并且NumPy构建基础设施的支持不够好。


Enthought 提供了 EPD 的 64 位构建版本,用于学术用途是免费的(他们支持 win64 端口),并使用 MKL 来提高速度。此外还有另一组非官方二进制文件,链接如下。 - David Cournapeau
2
64位版本是否可供学术使用?这将是很好的选择 - 从网站上看,似乎只有32位版本是免费提供的。 - robince

6

正如SciPy的记录所述,SciPy并不适用于Win64:

Warning: Windows 64 bits support is experimental, and only available for
testing. You are advised not to use it for production.

我建议您安装32位版本的Python,并停止尝试自己构建SciPy。如果您仍然想尝试,请按照PiotrLegnica所说的首先编译BLAS和LAPACK。请查看记录以查找它正在寻找这些库的已编译版本的位置。


NumPy(至少v1.5.1)不再发出此警告。 - Sridhar Ratnakumar

5

WinPython是一个开源的发行版,其中包含64位的NumPy和SciPy。


3
另一个选择:http://www.pythonxy.com/,免费并包含大量可以顺畅协同工作的东西。这个人说:这里。你试过linux.pythonxy吗?(http://linux.pythonxy.com)。它准备好了64位...虽然我不太确定那是什么意思。更新:这似乎已经死了。现在我使用Anaconda,它有32位或64位安装程序。

3
为了完整起见:Enthought提供了一个包含SciPy的Python发行版,但它不是免费的。注意:我从未使用过它。
更新:这个答案已经被遗忘了,直到有人点赞才让我回来看一下。此时,我会支持endolith建议的免费Anaconda

2
我在一台64位Windows 8.1机器上安装了32位Python 3.5。我尝试了Stack Overflow上几乎所有的方法,但都不起作用!然后我在这里找到了解决方法:这里。它说:

SciPy是用于数学、科学和工程的软件。

需要numpy+mkl

在安装scipy之前先安装numpy+mkl。

mkl很重要!!但以前没有人提到过!

然后我安装了mkl:

C:\Users\****\Desktop\a> pip install mkl_service-1.1.2-cp35-cp35m-win32.whl
Processing c:\users\****\desktop\a\mkl_service-1.1.2-cp35-cp35m-win32.whl
Installing collected packages: mkl-service
Successfully installed mkl-service-1.1.2

然后我安装了 SciPy:

C:\Users\****\Desktop\a>pip install scipy-0.18.1-cp35-cp35m-win32.whl
Processing c:\users\****\desktop\a\scipy-0.18.1-cp35-cp35m-win32.whl
Installing collected packages: scipy
Successfully installed scipy-0.18.1

它成功了~是的 :)

小提示:你可以通过谷歌搜索“whl_file_name.whl”来知道从哪里下载。:)

更新:

在完成所有这些步骤后,您仍然无法在Python 3中使用SciPy。如果您打印“import scipy”,您会发现有错误消息,但不要担心,只需执行一个简单、有用的操作。在这里注释掉那行代码即可。

from numpy._distributor_init import NUMPY_MKL

我保证这是最后要做的事情 :)

在此输入图片描述

PS: 在进行以下步骤之前,最好先安装NumPy。使用以下命令非常简单:

pip install numpy

2

在Windows上独立安装Python数据科学包是一件非常困难的事情。不妨尝试使用Anaconda(一个安装程序,提供400多个Python包,支持py2和py3)。Anaconda真的帮了我很大的忙!


2
尝试在您的2.6.2版本上安装Python 2.6.3(这应该还会添加正确的注册表项),或者使用此脚本注册您现有的安装。之后,安装程序应该可以正常工作。
构建SciPy需要Fortran编译器和库-BLASLAPACK

当我运行Fredrik Lundh的脚本时,出现以下信息: "无法注册! 您可能有另一个Python安装!"。我已经更新了我的系统中的注册表项。(一些变量是:pythonpath:'d:\ Python262; d:\ Python262 \ Lib \; d:\ Python262 \ DLLs \',regpath:'SOFTWARE \ Python \ Pythoncore \ 2.6 \')。 - Peter Mortensen
如果存在 HKEY_LOCAL_MACHINE \ SOFTWARE \ Python \ PythonCore \ 2.6 \,则尝试将其删除并重新运行。 另外 - 您是否具有足够的权限来运行它? - Cat Plus Plus
我尝试了一下,得到了“--- Python 2.6 is now registered!”的结果。然而,当运行scipy-0.7.1rc3-win32-superpack-python2.6.exe时,结果相同。这个程序可以在64位版本的Python上正常工作吗?(是的,我有太多的特权 :-) (管理员)。出于安全原因,我知道我不应该这样做。) - Peter Mortensen

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接