如何在64位Windows上安装SciPy?

65 投票
16 回答
133503 浏览
提问于 2025-04-15 14:48

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

首先,SciPy依赖于NumPy,而NumPy在64位Windows上有一个安装程序:numpy-1.3.0.win-amd64-py2.6.msi(这是直接下载链接,大小为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"

到目前为止,我做了以下事情:

第一步

下载了NumPy的超级包安装程序 numpy-1.3.0rc2-win32-superpack-python2.6.exe (直接下载链接, 4782592字节)。运行这个安装程序时,同样出现了“无法安装。需要Python 2.6版本,但在注册表中未找到。”的消息。 更新:实际上有一个可以工作的NumPy安装程序 - 请参见问题开头。

第二步

尝试用另一种方式安装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,8 GB内存,安装了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.
>>>

PATH的值,命令行窗口中SET的结果:

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\

16 个回答

32

简单来说,现在Windows 64位的支持还在开发中。超级包在64位的Python上肯定不能用,但在32位的Python上是可以的,即使是在64位的Windows系统上也没问题。

Windows 64位的主要问题是,用mingw-w64来构建程序目前还不太稳定:可能是我们(NumPy开发者)的原因,也可能是Python或mingw-w64的问题。很可能是这些原因的结合。所以你必须使用专有的编译器:除了微软的编译器,其他的编译器会让NumPy随机崩溃;对于Fortran编译器,推荐使用ifort。到目前为止,NumPy和SciPy的源代码可以用Visual Studio 2008和ifort编译(所有测试都通过),但构建过程还是挺麻烦的,而且NumPy的构建支持也不太好。

63

可以在 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 找到非官方的64位安装包,适用于 NumPySciPy

确保你下载和安装的包(也叫轮子)与你的 CPython 版本和 位数 匹配(例如,cp35 代表 Python 3.5;win_amd64 代表 x86_64)。

你需要先安装 NumPy;在管理员权限的命令提示符下进行系统范围的安装(也就是安装到程序文件夹):

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

或者可以加上--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])。

1

我还没试过,但你可以考虑下载这个版本Portable Python。它里面包含了在Python 2.5.4上运行的Scipy-0.7.0b1。

撰写回答