第一章:安装NumPy和SciPy
第一节:获取Numpy和SciPy
SciPy是开放源码的数学,科学和工程软件。 SciPy库依赖于NumPy,它提供了便捷的N维数组操作。 SciPy库构建为与NumPy数组一起工作,并提供了许多用户友好和高效的数值例程,例如用于数值积分和优化的例程。 它们一起运行在所有流行的操作系统上,安装快速且免费。 NumPy和SciPy易于使用,但功能强大,足以受到一些世界领先的科学家和工程师的依赖。
官方资源和二进制发行版本
在每一发行版本的numpy和scipy中,Numpy管方都针对主要的平台(Linux、Windows、OSX)提供了源码和二进制安装包。
项目 | 可用包 | 下载地址 |
---|---|---|
Numpy | 官方适配所有平台(WIndows,Linux和Mac OSX)的源码包和二进制包 | https://pypi.python.org/pypi/numpy |
Scipy(source) | 官方适配所有平台(WIndows,Linux和Mac OSX)的源码包和二进制包 | https://github.com/scipy/scipy/releases |
Scipy(pipy page all) | 官方适配所有平台(WIndows,Linux和Mac OSX)的源码包和二进制包 | https://pypi.python.org/pypi/scipy |
源码仓库
目前多数的开发版本的Numpy和Scipy可以通过GitHub上的官方仓库获取,
获取最新的Numpy源码的命令如下:
git clone https://github.com/numpy/numpy.git](https://github.com/numpy/numpy.git) numpy
获取最新的Scipy的源码如下
git clone https://github.com/scipy/scipy.git scipy
第二节:构建说明
有关Scipy的构建说明,请参阅其文档。 最新英文版本可在以下网址找到:https://docs.scipy.org/doc/scipy-dev/reference/building/index.html,下面的翻译的文档截止2018年1月11日是最新的。
安装和更新
安装软件包
这些是在SciPy生态系统中安装软件包普通说明。
科学的Python分布
对于许多用户,尤其是在Windows上,最简单的方法就是下载其中一个Python发行版,其中包括所有的关键包:
Anaconda:免费发行的Python与科学软件包。支持Linux,Windows和Mac。
Enthought Canopy:包括核心科学软件包。支持Linux,Windows和Mac.
Python(x,y):基于Spyder IDE的免费发行版,包括科学软件包。仅限Windows。
WinPython:免费发行,包括科学软件包。仅限Windows。
Pyzo:基于Anaconda和IEP交互式开发环境的免费发行。支持Linux,Windows和Mac。
通过pip安装
大多数主要项目都将官方软件包上传到Python Package索引。它们可以使用Python的标准pip包管理器安装在大多数操作系统上。请注意,您需要在您的系统上安装Python和pip。您可以通过以下命令来安装软件包:
python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose
我们建议使用用户安装,使用--user标志来点(注意:不要使用sudo pip,这会导致问题)。这会为您的本地用户安装软件包,而不会写入系统目录。
通过Linux软件包管理器安装系统
Linux上的用户可以从发行版提供的存储库中安装软件包。这些安装将是系统范围的,可能比使用pip可用的版本更旧。
1.Ubuntu和Debian
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython -book python-pandas python-sympy python-nose
用户可能还想添加额外的SciPy包的NeuroDebian存储库。
2.Fedora的
Fedora 22及更高版本:
sudo dnf install numpy scipy python-matplotlib ipython python-pandas sympy python-nose atlas-devel
通过Mac软件包管理器安装系统
Macs没有预装的软件包管理器,但有几个常用的软件包管理器可以安装。
1.MacPorts
对于使用Macports的Python 3.5,在终端中执行此命令:
sudo port install py35-numpy py35-scipy py35-matplotlib py35-ipython +笔记本py35-pandas py35-sympy py35-nose
2.Homebrew
您可以使用下面命令安装NumPy,SciPy和Matplotlib:
brew tap homebrew / science && brew install python numpy scipy matplotlib
其他选择
正如上面解释的,大多数项目的官方二进制和源代码包都可以通过pip获得。二进制包也可以从第三方获得,比如上面的Python发行版。对于Windows,Christoph Gohlke为许多软件包提供了预构建的Windows安装程序。
- 源代码包
您可以从源代码构建任何包,例如,如果您想参与开发。对于完全用Python编写的包来说,这很容易,而像NumPy这样的其他编译器则需要编译C代码。请参阅个别项目了解更多详情。
第二节:使用源码构建
注意:如果你仅仅就是想尝试安装SciPy,请看上面的安装部分
1.使用源码在Linux平台下构建
一般说明
为了使用源码构建Numpy和SciPy,先获取源码包,解压,并且执行下面命令:
python setup.py install --user # installs to your home directory
或者
python setup.py build
python setup.py install --prefix=$HOME/local
在构建之前,你应该需要安装Numpy和SciPy的依赖包
- BLAS和LAPACK库(可选,但强烈推荐用于NumPy,SciPy需要):通常是ATLAS + OpenBLAS或MK
- C和Fortran编译器(通常是gcc和gfortran)。
- Python头文件(通常是一个名为python-dev或python-devel的软件包)
- 除非从发布的源代码包构建,否则Cython编译器是必需的(通常位于名为cython的包中)。 为了构建最近的SciPy,你可能需要一个比你的发布版本更新的版本Cython。
通常情况下,您需要从Linux发行版提供的软件包中安装以上所有内容,因为自己构建它们非常复杂。 如果你需要使用特定的BLAS / LAPACK库,你可以这样做
export BLAS=/path/to/libblas.so
export LAPACK=/path/to/liblapack.so
export ATLAS=/path/to/libatlas.so
python setup.py............
如果你不想要任何LAPACK,只要执行“export LAPACK =”即可。
您可以在下面找到许多主要Linux发行版的其他安装说明和建议。
特别说明
- Debian/Ubuntu
- Fedora
- Intel C Compiler and MKL
- Intel MKL 11.0(update Dec2012)
Debian / Ubuntu
从源码构建下面的包是必须:
sudo apt-get install gcc gfortran python-dev libopenblas-dev liblapack-dev cython
要自定义使用哪个BLAS,可以设置一个site.cfg文件。 请参阅numpy源文件中的site.cfg.example文件,了解可以设置的选项。
请注意,Debian和Ubuntu以可交换的方式优化了BLAS库。 您可以安装ATLAS或OpenBLAS等库,并通过替代机制更改默认的库:
$ sudo apt-get install libopenblas-base libatlas3-base
$ update-alternatives --list libblas.so.3
/usr/lib/atlas-base/atlas/libblas.so.3
/usr/lib/libblas/libblas.so.3
/usr/lib/openblas-base/libopenblas.so.0
$ sudo update-alternatives --set libblas.so.3 /usr/lib/openblas-base/libopenblas.so.0
请参阅/usr/share/doc/libatlas3-base/README.Debian了解如何为特定的CPU构建优化的ATLAS软件包。 打包的OpenBLAS在运行时选择最佳代码,因此不需要重新编译,除非打包版本不支持使用的CPU。
你也可以使用你自己建立的库来预加载它。 这不需要管理员权限。
LD_PRELOAD=/path/to/libatlas.so.3./my-application
Fedora26
安装构建SciPy的必要条件是,你可以执行下面的命令
sudo dnf install gcc-gfortran python3-devel python2-devel openblas-devel lapack-devel Cython
英特尔C编译器和MKL
英特尔MKL 11.0(2012年12月更新)
考虑到与英特尔®Composer XE SP1捆绑在一起的英特尔®MKL的默认安装路径,将以下行添加到顶级NumPy目录中的site.cfg,以便将英特尔®MKL用于英特尔®64(或更早称为em64t)架构Linux上的版本:
[MKL]
library\_dirs = / opt / intel / composer\_xe\_2013 / mkl / lib / intel64
include\_dirs = / opt / intel / composer\_xe\_2013 / mkl / include
mkl\_libs = mkl\_intel\_lp64,mkl\_intel\_thread,mkl\_core
如果你正在建立32位的NumPy,请添加如下
[MKL]
library\_dirs = / opt / intel / composer\_xe\_2013 / mkl / lib / ia32
include\_dirs = / opt / intel / composer\_xe\_2013 / mkl / include
mkl\_libs = mkl\_intel,mkl\_intel\_thread,mkl\_core
您可以使用动态接口库mkl_rt.lib,而不是如上所示的用于英特尔®MKL的分层链接方法。因此,对于ia32和intel64架构,请按如下所示进行更改
mkl\_libs = mkl\_rt
修改numpy / numpy / distutils / intelccompiler.py中的cc_exe,如下所示:
cc\_exe ='icc -O2 -g -openmp -avx'
在这里,我们使用基于英特尔®SandyBridge架构(-avx)的默认优化(-O2),OpenMP线程(-openmp)以及用于英特尔®至强E5或E3系列的英特尔®AVX优化。运行icc -help以获取有关处理器特定选项的更多信息。
用Intel编译器编译并安装NumPy(在64位平台上用“intelem”替换“intel”):
python setup.py config --compiler = intel build\_clib --compiler = intel build\_ext --compiler = intel install
使用Intel编译器编译并安装SciPy(在64位平台上用“intelem”替换“intel”):
python setup.py config --compiler = intel --fcompiler = intel build\_clib --compiler = intel --fcompiler = intel build\_ext --compiler =
intel --fcompiler = intel install
您必须将LD_LIBRARY_PATH设置为英特尔®MKL库(具体值取决于您的体系结构,编译器和库版本)以及OpenMP库,以便NumPy正常工作。如果您为英特尔®64位平台构建NumPy:
$export LD\_LIBRARY\_PATH = / opt / intel / composer\_xe\_2013 / mkl / lib / intel64:/ opt / intel / composer\_xe\_2013 /
compiler / lib / intel64:$ LD\_LIBRARY\_PATH
如果您为ia32位平台构建NumPy:
$export LD\_LIBRARY\_PATH = / opt / intel / composer\_xe\_2013 / mkl / lib / ia32:/ opt / intel / composer\_xe\_2013 / compiler
/lib/ ia32:$ LD\_LIBRARY\_PATH
第三节:第三方/供应商包管理器
下面是包含NumPy和SciPy包的第三方和操作系统供应商软件包管理器的部分列表。
这些软件包不是由NumPy和SciPy开发者维护的; 这个列表只是为了方便。 这些软件包可能并不总是提供最新版本的软件,并且可能不会被维护。
重要提示:如果您遇到这些软件包的问题(尤其是与安装/构建错误有关的问题),请将问题首先报告给软件包维护人员,而不是NumPy / SciPy邮件列表。