如何在64位Windows上安装SciPy?
我该如何在我的系统上安装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 个回答
简单来说,现在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的构建支持也不太好。
可以在 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 找到非官方的64位安装包,适用于 NumPy 和 SciPy。
确保你下载和安装的包(也叫轮子)与你的 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
])。
我还没试过,但你可以考虑下载这个版本的Portable Python。它里面包含了在Python 2.5.4上运行的Scipy-0.7.0b1。