您的位置:首页 > 编程语言 > Python开发

在win8环境下如何安装numpy和scipy包

2016-06-15 18:01 295 查看
使用机器环境win8 64位
python编译器python2.6

首先我们考虑到的当然是去py的官网上下载有关的包这里给出下载路径
http://www.scipy.org/scipylib/download.html
在这里我们可以找到对应numpy/scipy各种版本适配于配忠server的安装包和源码包。





在找到对应python2.6 windows版本的exe安装包下载之后发现并不能安装,这里会抛出错误异常。错误异常的截图如下





为什么会产生这样的错误呢,答案在这个帖子里面说的很详细了,也有很多解决的办法,这里针对python2.7版本有了很详细的bug报告在python的官网上,大家有兴趣的可以查看一下。
http://bugs.python.org/issue6792
这里我们只是大致的解释下原因和我所选的一条troubleshooting的思路。
我们是64位python,而我们下载下来的包很明显是32位的安装包,当32位installer安装的时候它会去寻找HKLM|HKCU\SOFTWARE\wow6432node\下的软件信息,而64位的软件信息时写在HKLM|HKCU\SOFTWARE\下面的。这就意味着64位的python installer信息是写在了HKLM\SOFTWARE\Python中,当时32位setuptool installer却去寻找HKLM\SOFTWARE\wow6432node\Python




在这里有这样几种方法和思路
1.使用32位版本的python,让后再安装32位的工具包这样就不会出现不会找到的情况。
2.坚持使用64位版本的python,然后找到相对应的64位的工具包来安装这样也可以避免这种情况的产生。论坛里面dalao针对你复制32位的注册表信息到64位注册表信息的条目值中这种方法可行性给出了解释,认为不是一个很好的方法。

what the answer above suggests: copy
HKLM\SOFTWARE\Python
to
HKLM\SOFTWARE\wow6432node\Python
,
but this will cause problems with binary distributions, as 64-bit Python can't load 32-bit compiled modules (do NOT do this!)

3.安装python给的setuptool来解决这个问题。使用easy_install 或者是pip。
在这里我们使用setuptool+编译源码的方法来解决这个问题。
进入下载setuptool的官网https://pypi.python.org/pypi/setuptools#windows-powershell-3-or-later

这里我们只针对windows来进行troubleshooting。官网中给出了针对不同powershell的版本给出了不同的安装方法。一起来看看

windows(powershell 3 or later)
我们可以直接使用命令行的方式来下载安装setuptool。在运行powershell的时候注意提升administrative的权限
>(Invode-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python -
如果是user-local安装的话键入下列指令
>(Invode-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python - --user
这里官方给出了一个实例说如果你已经安装了python2.7你可以通过py命令来安装python3.3
>(Invode-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | py -3 -

官方给出来推荐的方法是你下载ez_setup.py这个脚本然后在你本地电脑上去运行这个脚本,这样setuptool同样也就下载下来了。当你下载下来的时候setuptool就存在于你本地python安装路径的script文件夹里面了。





这里注意需要将这个路径写入电脑环境变量当中方便调用。
或者你也可以不用写入环境变量直接在当前你安装setuptool的路径下执行这个.exe文件 后门跟上你想安装的包,这样它就会自动的去网上下载,这一般能解决大部分的问题,但是对于我们这个问题依然没有什么好的办法。





这里我当时也没有想到去修改注册表的方法,没什么办法了下源码包来撸。源码包上面给的下载地址也有。
这里我们放到setuptool同路径下解压,以我的机器为例
C:\Python26\Scripts\numpy-1.9.2在这个下面找到setupegg.py这个文件,使用powershell来编译安装./setupegg.py install 这里就需要等待一会了。为什么不用setup.py来编译安装呢....在这里你编译安装会报一个错误
error: Unable to find vcvarsall.bat
出现这个问题的原因和你的vc编译器有关,在这里要安装一个特定的编译器VS 2008 所以需要下载一个microsoft visual C++ compiler for python 2.7的补丁就好了,下载地址在这里 http://www.microsoft.com/en-us/download/details.aspx?id=44266 安装上述补丁之后使用pip install numpy来安装也行。
记得安装完成之后import numpy测试一下 numpy.test('full')





现在numpy包安装完成之后生下来scipy的安装又是一个难题。由于网上给的很多都是Linux的安装方法找了半天也没一个windows的,而且基本照着做没有一个成功的所以只能自己看包里的README和INSTALL。这里在安装之前首先要解决包的依赖关系。
scipy依赖这样几个包 numpy,nose,lapack,atlas。针对nose和atlas我们都可以用easy_installation这个工具来进行安装,但是lapack则不行针对低版本的python在windows上跑我只能建议去lapack上按照他给的方法去进行编译,如果你有
Intel C and Fortran Compilers这个编译器,否则还是建议把python升级到2.7

针对python的科学,数学,工程和数据分析包这里推荐一个下载工具https://www.continuum.io/downloads(但是这个针对python2.6好像并没有什么用)

这里先解决lapack包的依赖关系http://icl.cs.utk.edu/lapack-for-windows/ 很可惜的就是我这没有inter的编译器所以最后还是无法来安装这个lapack包,导致2.6的环境下没有安装上scipy。

windows下python的包管理器pip安装 https://pip.pypa.io/en/latest/installing.html#python-os-support
python get-pip.py

针对2.7的版本可以直接安装pip install scipy

顺带附上windows上cmake编辑器。这是cmake的下载地址https://cmake.org/download/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: