安装科学包

科学软件往往比大多数软件具有更复杂的依赖性,它通常具有多种构建选项,以利用不同类型的硬件,或与不同的外部软件进行互操作。

特别地, 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堆栈。

其中一些分布可能与标准不兼容。 pipvirtualenv 基于工具链。

斯帕克

Spack 是一个灵活的包管理器,旨在支持多种版本、配置、平台和编译器。它的建立是为了满足大型超级计算中心和科学应用团队的需求,他们必须经常以多种不同的方式构建软件。spack不限于python;它可以为 CC++FortranR 和其他语言。它是非破坏性的;安装一个包的新版本不会破坏现有的安装,因此许多配置可以在同一个系统上共存。

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就可以轻松安装下载)。