安装科学软件包

科学软件往往比大多数软件具有更复杂的依赖关系,并且通常会有多个构建选项,以利用不同类型的硬件,或与不同的外部软件交互。

特别是,NumPy,它为科学 Python 栈中的大多数软件提供了基础,可以配置为与不同的 FORTRAN 库交互,并可以利用现代 CPU 中可用的不同级别的矢量化指令。

从 NumPy 1.10.4 版本和 SciPy 1.0.0 版本开始,所有主要操作系统(Windows、macOS 和 Linux)的预构建 32 位和 64 位 wheel 格式二进制文件均可在 PyPI 上获取。然而,请注意,在 Windows 上,NumPy 二进制文件链接到 ATLAS BLAS/LAPACK 库,并限制为 SSE2 指令,因此它们可能无法提供最佳的线性代数性能。

有许多替代选项可用于获取科学 Python 库(或任何其他需要编译环境才能从源代码安装但未在 PyPI 上提供预构建 wheel 文件的 Python 库)。

从源代码构建

使得 NumPy(以及许多依赖它的项目)难以作为 wheel 文件分发的复杂性也使得它们难以自行从源代码构建。然而,对于那些愿意花费时间处理 C 和 FORTRAN 编译器和链接器的勇敢者来说,从源代码构建始终是一个选项。

Linux 发行版软件包

对于 Linux 用户,系统包管理器通常会提供各种科学软件的预编译版本,包括 NumPy 和科学 Python 栈的其他部分。

如果使用可能已过时数月的版本可以接受,那么这可能是一个不错的选择(只需确保在使用虚拟环境时允许访问安装到系统 Python 中的发行版)。

Windows 安装程序

许多目前不(或不能)发布 wheel 文件的 Python 项目至少会在 PyPI 或其项目下载页面上发布 Windows 安装程序。使用这些安装程序可以避免用户设置合适的环境以在本地构建扩展。

这些安装程序中提供的扩展通常与 python.org 上发布的 CPython Windows 安装程序兼容。

与 Linux 系统软件包一样,Windows 安装程序只会安装到系统 Python 安装中——它们不支持在虚拟环境中安装。在使用虚拟环境时允许访问安装到系统 Python 中的发行版是解决此限制的常用方法。

Wheel 项目还提供了一个 wheel convert 子命令,可以将 Windows bdist_wininst 安装程序转换为 wheel。

macOS 安装程序和包管理器

与 Windows 上的情况类似,许多项目(包括 NumPy)发布了与 python.org 上发布的 macOS CPython 二进制文件兼容的 macOS 安装程序。

macOS 用户还可以访问 Linux 发行版风格的包管理器,例如 Homebrew。SciPy 网站上有更多关于使用 Homebrew 在 macOS 上安装 SciPy 的详细信息。

SciPy 发行版

SciPy 网站列出了几个发行版,这些发行版以易于使用和更新的格式为最终用户提供了完整的 SciPy 栈。

其中一些发行版可能与基于标准 pipvirtualenv 的工具链不兼容。

Spack

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

Spack 提供了一种简单而强大的语法,允许用户简洁地指定版本和配置选项。包文件用纯 Python 编写,并且它们是模板化的,因此可以轻松地用单个包文件交换编译器、依赖项实现(如 MPI)、版本和构建选项。Spack 还会生成模块文件,以便可以将软件包从用户环境中加载和卸载。

conda 跨平台包管理器

conda 是一个开源(BSD 许可)包管理系统和环境管理系统,允许用户安装多个版本的二进制软件包及其依赖项,并轻松切换它们。它是一个跨平台工具,可在 Windows、MacOS 和 Linux 上运行。Conda 可用于打包和分发各种软件包,不仅限于 Python 软件包。它完全支持本机虚拟环境。Conda 使环境成为一流公民,即使对于 C 库,也可以轻松创建独立环境。它用 Python 编写,但与 Python 无关。Conda 将 Python 本身作为软件包进行管理,因此可以执行 conda update python,这与仅管理 Python 软件包的 pip 不同。

Anaconda Anaconda 是 Anaconda, Inc. 发布的一个 Python 发行版。它是一个用于大数据和科学用途的稳定开源软件包集合,以及用于管理 conda 环境的图形界面实用程序集合。

除了 Anaconda 提供的完整发行版外,conda 包管理器本身也可以在 minicondaminiforgepixi 中获取。

Conda 软件包可在 Anaconda.org 上的多个通道中获取,包括 Anaconda, Inc 支持的默认通道、社区支持的 conda-forge 通道(提供各种预构建软件包)以及一些特定领域的软件包集合。