如果您对在64位Windows上安装NumPy和SciPy感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于在64位Windows上安装NumPy和SciPy的详细内容,我们还
如果您对在64位Windows上安装NumPy和SciPy感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于在64位Windows上安装NumPy和SciPy的详细内容,我们还将为您解答带有Pip的相关问题,并且为您提供关于64位Windows上的NumPy for Python 2.7、CreateThread()在64位Windows上失败,在32位Windows上运行.为什么?、Linux下Python科学计算包numpy和SciPy的安装、vbscript – 如何在64位Windows中检索启动文件夹位置的有价值信息。
本文目录一览:- 在64位Windows上安装NumPy和SciPy(带有Pip)
- 64位Windows上的NumPy for Python 2.7
- CreateThread()在64位Windows上失败,在32位Windows上运行.为什么?
- Linux下Python科学计算包numpy和SciPy的安装
- vbscript – 如何在64位Windows中检索启动文件夹位置
在64位Windows上安装NumPy和SciPy(带有Pip)
我发现在64位Windows上无法通过安装程序安装NumPy /
SciPy,只有在32位上才可以。因为我需要的内存比32位安装提供的内存更多,所以我需要所有内容的64位版本。
我试图通过安装所有东西,Pip
并且大多数事情都起作用了。但是当我来到SciPy时,它抱怨缺少一个Fortran编译器。所以我通过MinGW /
MSYS安装了Fortran。但是之后,您不能立即安装SciPy,需要重新安装NumPy。因此,我尝试了这一点,但现在通过Pip
和不再起作用了easy_install
。两者都给出以下错误:
LNK2019
和有关很多错误LNK1120
。- 我在
C
:C2065,
C2054,
C2085,
C2143`等范围内遇到很多错误。我认为它们属于同一范围。 - 找不到Fortran链接器,但是我不知道如何安装它,找不到任何内容。
- 还有更多错误已经超出了我的cmd-windows的可见部分…
- 致命错误是关于
LNK1120
:
build \ lib.win-amd64-2.7 \ numpy \ linalg \
lapack_lite.pyd:致命错误LNK1120:7个未解决的外部错误:安装脚本退出,错误:命令“ C:\ Users \ me \
AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python \
9.0 \ VC \ Bin \ amd64 \ link.exe / DLL / nologo / INCREMENTAL:NO /
LIBPATH:C:\ BLAS / LIBPATH:C:\ Python27 \ libs / LIBPATH:C:\ Python27 \
PCbuild \ amd64 /LIBPATH:build\temp.win-amd64-2.7 lapack.lib blas.lib /
EXPORT:initlapack_lite build \ temp.win-amd64-2.7 \ Release \ numpy \ linalg
\ lapack_litemodule.obj / OUT:build \ lib .win-amd64-2.7 \ numpy \ linalg \
lapack_lite.pyd /IMPLIB:build\temp.win-
amd64-2.7\Release\numpy\linalg\lapack_lite.lib /MANIFESTFILE:build\temp.win-
amd64-2.7\Release \ numpy \ linalg \ lapack_lite.pyd.manifest“失败,退出状态为1120
在64位Windows计算机上安装64位版本的NumPy和SciPy的正确方法是什么?我想念什么吗?我需要在某处指定一些内容吗?对于Windows,我没有找到关于这些问题的信息,仅针对Linux或Mac
OS X,但是由于我无法使用其命令,它们对我没有帮助。
答案1
小编典典编辑:Numpy项目现在以滚轮格式提供预编译的程序包(程序包格式使已编译的代码可以作为程序包中的二进制文件),因此安装现在与其他程序包一样容易。
Numpy(还有一些其他软件包,例如Scipy,Pandas等)包括很多C-,Cython和Fortran代码,在使用它们之前,需要对其进行正确的编译。顺便说一下,这也是这些Python软件包提供如此快速的线性代数的原因。
要获取用于Windows的预编译软件包,请查看Gohlke的非官方Windows
Binaries或使用诸如Winpython(正常工作)或Anaconda(更复杂)的发行版,它们为整个预配置环境提供了来自科学python堆栈的许多软件包。
64位Windows上的NumPy for Python 2.7
我一直试图在Windows 64位上获得NumPy for Python 2.7,但是大家提到的页面 http://www.lfd.uci.edu/~gohlke/pythonlibs/并没有在我的任何设备上打开.
还有其他地方我可以找到吗?
解决方法
07.01由WinPython创建者解释为什么通常很难找到64位Windows NumPy:
According to experienced developers,there is no decent open-source (free) Fortran compiler for the Windows 64bit platform. As a consequence,it’s impossible to build NumPy or SciPy on this platform using only free and open-source tools. That’s why there is no official Windows 64bit binaries for these two libraries. The only ready-to-use installers available out there were prepared by Christoph Gohlke (using Intel Fortran compiler,a.k.a. ‘ifort’) and these are clearly unofficial binaries. Furthermore,Christoph has built two different installers for NumPy: one unoptimized and one optimized with the Intel Math Kernel Library (MKL),hence providing better performance. And Gohlke’s SciPy 64bit binary package (the only one available freely online) require NumPy MKL. The problem is that,according to Christoph Gohlke,the MKL license does not allow me (or anyone else) to redistribute these binaries,unless I have purchased such a license. It is still unclear to me if the end user would also require this license too. Hopefully no. Let’s assume that. Besides,after reading carefully the Intel MKL License terms,I’m quite sure that I can redistribute the MKL-based NumPy built because it’s just runtime redistribution. So I think I will purchase an Intel Fortran Compiler license (including MKL) to be able to rebuild NumPy and SciPy in the near future but in the meantime I will just redistribute the packages built by Christoph Gohlke.
CreateThread()在64位Windows上失败,在32位Windows上运行.为什么?
我有一个不寻常的问题.我正在将一些代码从32位移植到64位. 32位代码工作得很好.但是当我为64位版本调用CreateThread()时,调用失败.我有三个失败的地方. 2调用CreateThread(). 1调用beginthreadex()调用CreateThread().
所有三个调用都失败,错误代码为0x3E6,“对内存位置的访问无效”.
问题是所有输入参数都是正确的.
HANDLE h; DWORD threadID; h = CreateThread(0,// default security 0,// default stack size myThreadFunc,// valid function to call myParam,// my param 0,// no flags,start thread immediately &threadID);
对CreateThread()的所有三次调用都是从我在程序执行开始时注入目标程序的DLL(这是在程序到达main()/ WinMain()之前)开始的.如果我通过说菜单从目标程序(相同的参数)调用CreateThread(),它就可以工作.相同的参数等奇怪.
如果我传递NULL而不是& threadID,它仍然会失败.
如果我将NULL作为myParam传递,它仍然会失败.
我不是从DllMain()内部调用CreateThread,所以这不是问题.我很困惑,在谷歌等搜索没有显示任何相关的答案.
如果有人以前见过这个或有任何想法,请告诉我.
谢谢阅读.
回答
简短回答:x64上的堆栈帧需要16字节对齐.
更长的回答:
在对调试器墙猛烈抨击并发布对各种建议的响应之后(所有这些都有所帮助,促使我尝试新方向)我开始在调用CreateThread()之前探索堆栈上的内容.事实证明这是一个红鲱鱼,但它确实导致了解决方案.
向堆栈添加额外数据会更改堆栈帧对齐.迟早,其中一个测试会使您进行16字节堆栈帧对齐.那时代码工作了.所以我回溯了我的步骤并开始将NULL数据放入堆栈而不是我认为正确的值(我一直在推送返回地址来伪造一个调用帧).它仍然有效 – 所以数据并不重要,它必须是实际的堆栈地址.
我很快意识到堆栈的16字节对齐.以前我只知道数据的8字节对齐.这microsoft document explains all the alignment requirements.
如果堆栈帧在x64上没有16字节对齐,则编译器可能会在将数据推入堆栈时将大(8字节或更多)数据放在错误的对齐边界上.
因此我面临的问题 – 使用未在16字节边界上对齐的堆栈调用挂钩代码.
对齐要求的快速摘要,表示为大小:对齐
> 1:1
> 2:2
> 4:4
> 8:8
> 10:16
> 16:16
大于8字节的任何内容在2边界的下一个幂上对齐.
我认为微软的错误代码有点误导.最初的STATUS_DATATYPE_MISALIGNMENT可以表示为STATUS_STACK_MISALIGNMENT,这将更有帮助.但随后将STATUS_DATATYPE_MISALIGNMENT转换为ERROR_NOACCESS – 这实际上掩盖并误导了问题是什么.非常无益.
感谢大家发布的建议.即使我不同意这些建议,它们也促使我在各方面进行测试(包括我不同意的方向).
写下数据类型错位问题的更详细描述:64 bit porting gotcha #1! x64 Datatype misalignment.
解决方法
好的,这个想法不是它.你确定在main / WinMain之前调用CreateThread是有效的吗?它可以解释为什么它在菜单中起作用 – 因为它在main / WinMain之后.
另外,我会三次检查myParam的生命周期. CreateThread在调用传入的函数之前很久就会返回(我从经验中知道).
发布线程例程的代码(或只是几行).
它突然发生在我身上:您确定要将64位代码注入64位进程吗?因为如果你有一个64位的CreateThread调用并尝试将其注入到在WOW64下运行的32位进程中,则可能会发生错误.
开始认真地用尽了想法.编译器是否报告任何警告?
该错误可能是由于主机程序中的错误,而不是DLL?还有一些其他代码,例如在使用__declspec(导入/导出)时加载DLL,它发生在main / WinMain之前.例如,如果该DLLMain有错误.
Linux下Python科学计算包numpy和SciPy的安装
系统环境:
OS:RedHat5
Python版本:Python2.7.3
gcc版本:4.1.2
各个安装包版本:
scipy-0.11.0
numpy-1.6.2
nose-1.2.1
lapack-3.4.2
atlas-3.10.0
依赖关系:scipy的安装需要依赖于numpy、lapack、atlas(后两者都是线性代数工具包),而numpy和sci的测试程序的运行又依赖于nose,因此,整个安装过程必须要按顺序执行的,否则是无法执行下去的。
安装步骤:
1、安装nose
这个安装比较简单,解压缩nose的安装文件,进入nose的目录,直接运行setup.py即可:
tar -zxvf nose-1.2.1.tar.gz
cd nose-1.2.1
python setup.py install
2、安装lapack
由于最新版本的ATLAS可以直接集成lapack的安装压缩文件进行编译,因此,如果仅在python下使用的话,可以不用安装lapack。只需要下载压缩文件:lapack-3.4.2.tgz 即可。
3、安装ATLAS
这个的安装主要是配置一些选项,包括配置成64位库文件、位置无关的以及共享的链接库。详细的配置说明在atlas安装包 doc/ 下的pdf文件中。可查阅。
下面是我的安装过程:
tar -jxvf atlas3.10.0.tar.bz2
cd ATLAS
mkdir obj64
../configure -b 64 -Fa alg -fPIC -shared --prefix=/配置atlas的安装路径/atlas --with-netlib-lapack-tarfile=/lapack安装压缩文件存放的目录/lapack-3.4.2.tgz
(注:这个配置时间非常长,在Core i7 处理上,大概1个小时左右)
make
(下面是一些检查过程,保证没有问题之后再进行安装)
make check
make time
make install
至此,atlas安装完成。不过我们要记录下编译过程中所用的fortran编译器类型,这个信息在下面安装numpy和scipy的时候要用。还是在目录 obj64/ 下,执行
fgrep "F77 =" Make.inc
可以看到 F77 =
gfortran
记下这个编译器类型 gfortran.
4、安装numpy
numpy和scipy的安装过程都要显式的指明所用fortran编译器的类型,而且要与前面编译atlas时一致(在本文中即:gfortran),这一点非常重要,否则很多功能都会出错。
首先配置numpy目录下的site.cfg文件,指明atlas库的位置:
tar -zxvf numpy-1.6.2.tar.gz
cd numpy-1.6.2
cp site.cfg.example site.cfg
vim site.cfg
配置成如下格式:
[DEFAULT]
library_dirs = /usr/local/lib:/atlas的安装目录/atlas/lib
include_dirs = /usr/local/include:/atlas的安装目录/include
[blas_opt]
libraries = f77blas, cblas, atlas
[lapack_opt]
libraries = lapack, f77blas, cblas, atlas
[amd]
amd_libs = amd
[umfpack]
umfpack_libs = umfpack
接下来配置安装numpy所需要的Fortran编译器类型:
如果前面得到的Fortran编译器是gfortran的话,执行:
python setup.py build --fcompiler=gnu95
如果前面得到的Fortran编译器是g77的话,执行:
python setup.py build --fcompiler=gnu
然后执行
python setup.py install
安装完成
5、安装scipy
与安装numpy类似:
tar -zxvf scipy-0.11.0.tar.gz
cd scipy-0.11.0
vim site.cfg
配置成如下格式:
[DEFAULT]
library_dirs = /usr/local/lib:/atlas的安装目录/atlas/lib
include_dirs = /usr/local/include:/atlas的安装目录/include
[blas_opt]
libraries = f77blas, cblas, atlas
[lapack_opt]
libraries = lapack, f77blas, cblas, atlas
[amd]
amd_libs = amd
[umfpack]
umfpack_libs = umfpack
接下来配置安装numpy所需要的Fortran编译器类型:
如果前面得到的Fortran编译器是gfortran的话,执行:
python setup.py build --fcompiler=gnu95
如果前面得到的Fortran编译器是g77的话,执行:
python setup.py build --fcompiler=gnu
然后执行
python setup.py install
安装完成
然后可以在python下执行相应的测试程序:
python
>>> import nose
>>> import numpy
>>> import scipy
>>> numpy.test('full')
>>> scipy.test('full')
REF:
http://blog.sina.com.cn/s/blog_62dfdc740101aoo6.html
vbscript – 如何在64位Windows中检索启动文件夹位置
Set objShell = CreateObject("WScript.Shell") startupFolder = objShell.SpecialFolders("Startup")
但是当我在64位Windows上尝试时,它什么都不返回.具体来说,我正在测试64位Vista.我似乎无法找到适当的环境变量或语法.谢谢.
解决方法
Shell.Application
对象的替代变体:
Const ssfSTARTUP = &H7 Set oShell = CreateObject("Shell.Application") Set startupFolder = oShell.NameSpace(ssfSTARTUP) If Not startupFolder Is nothing Then WScript.Echo startupFolder.Self.Path End If
对你起作用吗?
关于在64位Windows上安装NumPy和SciPy和带有Pip的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于64位Windows上的NumPy for Python 2.7、CreateThread()在64位Windows上失败,在32位Windows上运行.为什么?、Linux下Python科学计算包numpy和SciPy的安装、vbscript – 如何在64位Windows中检索启动文件夹位置的相关知识,请在本站寻找。
本文标签: