安装科学包¶
科学软件往往比大多数软件具有更复杂的依赖性,它通常具有多种构建选项,以利用不同类型的硬件,或与不同的外部软件进行互操作。
特别地, NumPy 它为 scientific Python stack 可以配置为与不同的Fortran库进行互操作,并且可以利用现代CPU中可用的不同级别的矢量化指令。
从numpy的1.10.4版和scipy的1.0.0版开始,在 wheel
Pypi上的所有主要操作系统(Windows、MacOS和Linux)都可以使用这种格式。但是请注意,在Windows上,numpy二进制文件与 ATLAS <http://www.netlib.org/atlas/> BLAS/LAPACK库,仅限于SSE2指令,因此它们可能无法提供最佳的线性代数性能。
对于获取科学的python库(或任何其他需要从源代码安装编译环境且不在pypi上提供预先构建的轮盘文件的python库),有许多其他的选择。
从源代码生成¶
与车轮文件一样,使发布numpy(以及许多依赖于它的项目)变得困难的复杂性也使得从源代码自己构建它们变得困难。然而,对于那些愿意花费时间为C和Fortran的编译器和链接器争论的勇敢的人来说,从源代码构建总是一种选择。
Linux分发包¶
对于Linux用户,System Package Manager通常具有各种科学软件的预编译版本,包括Numpy和科学python堆栈的其他部分。
如果可以接受使用可能几个月以前的版本,那么这可能是一个不错的选择(只要确保在使用虚拟环境时允许访问安装在系统python中的分发版)。
Windows安装程序¶
许多不(或不能)发布车轮文件的Python项目目前至少在pypi或其项目下载页上发布Windows安装程序。使用这些安装程序,用户可以避免在本地构建扩展时需要设置合适的环境。
这些安装程序中提供的扩展通常与python.org上发布的cpython Windows安装程序兼容。
对于不提供自己的Windows安装程序的项目(甚至有些项目提供Windows安装程序),加利福尼亚大学的Christoph Gohlke提供了一个 collection of Windows installers . Windows上的许多python用户都报告了这些预构建版本的良好体验。
与Linux系统包一样,Windows安装程序将只安装到系统python安装中—它们不支持在虚拟环境中安装。在使用虚拟环境时,允许访问安装在系统python中的分发版是解决此限制的常用方法。
这个 wheel 项目还提供 wheel convert 可转换窗口的子命令 bdist_wininst 安装到车轮上。
MacOS安装程序和包管理器¶
与Windows上的情况类似,许多项目(包括numpy)发布与python.org上发布的macos cpython二进制文件兼容的macos安装程序。
MacOS用户还可以访问Linux分发风格的包管理器,如 MacPorts
. The SciPy site has more details on using MacPorts to install the scientific Python stack
scipy分布¶
scipy站点列表 several distributions 它以易于使用和更新的格式向最终用户提供完整的scipy堆栈。
其中一些分布可能与标准不兼容。 pip
和 virtualenv
基于工具链。
斯帕克¶
Spack 是一个灵活的包管理器,旨在支持多种版本、配置、平台和编译器。它的建立是为了满足大型超级计算中心和科学应用团队的需求,他们必须经常以多种不同的方式构建软件。spack不限于python;它可以为 C
, C++
, Fortran
, R
和其他语言。它是非破坏性的;安装一个包的新版本不会破坏现有的安装,因此许多配置可以在同一个系统上共存。
spack提供了一种简单但功能强大的语法,允许用户简洁地指定版本和配置选项。包文件是用纯Python编写的,它们是模板化的,这样就很容易用单个包文件交换编译器、依赖性实现(如MPI)、版本和构建选项。spack也会生成 模块 文件,以便可以从用户环境中加载和卸载包。
Conda跨平台包管理器¶
Anaconda 是Anaconda,Inc.发布的python发行版。它是一个稳定的开源软件包集合,用于大数据和科学用途。从5.0版的水蟒开始,默认安装了大约200个软件包,总共可以从水蟒存储库安装和更新400-500个软件包。
conda
是一个开源(BSD许可)软件包管理系统和环境管理系统,包含在Anaconda中,允许用户安装多个版本的二进制软件包及其依赖项,并在它们之间轻松切换。它是一个跨平台的工具,可以在Windows、MacOS和Linux上工作。Conda可以用来打包和分发各种包,它不仅限于Python包。它完全支持本机虚拟环境。Conda使环境成为一流的公民,使创建独立的环境变得容易,甚至对于C库也是如此。它是用python编写的,但不可知python。Conda将python本身作为一个包进行管理,以便 conda update python 与仅管理Python包的PIP不同,这是可能的。Conda有水蟒和小水蟒(只需python和Conda就可以轻松安装下载)。