开发环境快速入门指南(MacOS)

本快速入门指南将涵盖以下内容:

  • 设置和维护开发环境,包括安装编译器和SciPy构建依赖项;

  • 在GitHub上创建SciPy存储库的个人分支;

  • 使用GIT管理具有开发分支的本地存储库;

  • 执行原地构建的SciPy;以及

  • 创建将此开发版本的SciPy添加到Python路径的虚拟环境

在MacOS中(在11.1上测试)。

注解

本指南并不提供设置开发环境的唯一方法;有许多有效的Python发行版、C/Fortran编译器和安装选项可供选择。这里的步骤通常可以针对其他选择进行调整,但我们不能提供为它们量身定做的文档。

本指南假设您是在没有安装Python3的情况下开始的。如果您已经有Python3,您可能希望先卸载它,以避免在命令行中使用哪个Python版本的歧义。

构建Science Py

  1. 安装Apple开发人员工具。要做到这一点,一种简单的方法是 open a terminal window ,输入命令 xcode-select --install ,并按照提示操作。Apple开发者工具包括 git ,我们需要该软件来下载和管理本网站的源代码。

  2. 下载、安装并测试最新版本的 Anaconda Distribution of Python 。除了最新版本的Python3之外,Anaconda发行版还包括数十个最流行的用于科学计算的Python包 conda 包管理器,以及用于管理虚拟环境的工具。

    如果您正在使用终端进行安装,请确保在安装程序完成后遵循列出的“后续步骤”进行安装。您可能还需要重新启动终端窗口或输入 source ~/.bash_profile 以使所有更改生效。

  3. (可选)在终端窗口中,输入 conda list 。这显示了随Python的Anaconda发行版一起提供的所有Python包的列表。注意最新发布的SciPy版本就在其中;这不是您要构建的开发版本,可以修改。

    理想情况下,我们希望拥有两个版本,并且我们希望能够根据需要在这两个版本之间进行切换。 Virtual environments 就能做到这一点。只需在终端上按几个键,甚至单击一个图标,我们就可以启用或禁用我们的开发版本。我们来安排一下吧。

    注解

    如果 conda 不是可识别的命令,请尝试重新启动您的终端。如果仍然无法识别,请参阅“我应该将 Python 添加到MacOS还是Linux路径?”在 Anaconda FAQ

  4. 请输入 conda create --name scipydev 要创建名为的空虚拟环境,请执行以下操作 scipydev (或您喜欢的其他名称)。这告诉我们 conda 为我们的包裹创建一个新的、空的环境。使用激活环境 conda activate scipydev 。请注意,每当您想要使用开发版本的SciPy时,都需要激活这个虚拟环境。

  5. 请输入 conda config --env --add channels conda-forge 告诉 Python 我们想要的包裹来源。然后输入 conda install python=3.8 numpy pybind11 cython pythran pytest compilers sphinx pydata-sphinx-theme sphinx-panels matplotlib mypy 要安装以下软件包,请执行以下操作:

    • numpy pybind11 cython pythran 是本网站依赖的四个套餐。

    • compilers 保存用于构建SciPy的Fortran、C和C++源代码的编译器。

    • pytest 是运行测试套件所需的。

    • sphinxpydata-sphinx-themesphinx-panelsmatplotlib 是呈现本网站文档所必需的。

    • mypy 是一个针对Python的静电类型检查器。考虑使用它。

    请注意,我们安装的是SciPy的构建依赖项和其他一些软件,但不是SciPy本身。

  6. 浏览到 SciPy repository on GitHubcreate your own fork 。如果您还没有GitHub帐户,则需要创建一个GitHub帐户。

  7. 浏览到您的叉子。您的分叉将有一个URL,如下所示 https://github.com/mdhaber/scipy ,除非使用您的GitHub用户名代替“mdhaber”。

  8. 单击大的绿色“克隆或下载”按钮,然后将“.git”URL复制到剪贴板。URL将与您的fork的URL相同,不同之处在于它将以“.git”结尾。

  9. 在计算机上方便的位置为SciPy源代码创建一个文件夹。在终端中导航到它。

  10. 输入命令 git clone 后跟您的fork的.git URL。请注意,这将在终端的工作目录中创建一个 scipy 包含SciPy源代码的文件夹。

  11. 在终端中,导航到 scipy 根目录(例如 cd scipy )。

  12. 初始化git子模块: git submodule update --init

  13. 执行在位构建:输入 python3 setup.py build_ext --inplace
    这将编译SciPy附带的C、C++和Fortran代码。我们安装了 python3 和 Python 在一起。 setup.py 是SciPy根目录中的脚本,这就是为什么您必须在SciPy根目录中才能调用它的原因。 build_ext 是在中定义的命令 setup.py ,以及 --inplace 是一个选项,我们将使用它来确保编译在您已有的SciPy目录中进行,而不是Python包的默认位置。通过就地构建,您不必在测试对Python代码的更改之前重新构建SciPy。

  14. 测试版本:输入 python3 runtests.py -vruntests.py 是SciPy根目录中的另一个脚本。它运行一套测试来确保SciPy按其应有的方式工作,并且 -v 激活 --verbose 选项以显示所有测试输出。如果测试成功,您现在就有了一个可以正常工作的SciPy开发版本!您可以到此为止,但是只有当Python工作目录是SciPy根目录时,您才能使用这个开发版本。

  15. 请输入 conda develop ., where . 指的是当前目录。
    这将使我们能够 import Python中的SciPy开发版本,与Python的工作目录无关。

  16. 在新的终端窗口中,测试您的设置。如果您激活了虚拟环境(例如 conda activate scipydev )并运行从SciPy导入的Python代码,则您对SciPy代码所做的任何更改都应在代码运行时反映出来。在停用虚拟环境之后 (conda deactivate ),Python从 Python 安装的SciPy版本导入。您还可以通过在Python中执行以下命令来检查您使用的是哪个版本的SciPy::

    import scipy
    print(scipy.__version__)
    

    如果您已成功导入开发版本的SciPy,则Word dev 将显示在输出中,例如::

    1.6.0.dev0+be97f1a