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

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

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

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

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

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

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

in Ubuntu. (Tested on 16.04, 18.04, and 20.04). Users running Windows can follow these instructions after setting up Windows Subsystem for Linux or an Amazon EC2 instance with Ubuntu 20.04. However, the instructions for setting up a development environment with Docker may be more reliable.

注解

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

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

构建Science Py

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

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

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

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

    注解

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

  3. 请输入 conda config --env --add channels conda-forge 告诉 Python 我们想要的包裹来源。然后输入 conda create --name scipydev python=3.8 numpy pybind11 cython pythran pytest gfortran_linux-64 gxx_linux-64 sphinx pydata-sphinx-theme sphinx-panels matplotlib mypy git
    这告诉我们 conda 要创建名为的虚拟环境,请执行以下操作 scipydev (或您喜欢的其他名称)和几个包。

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

    • gfortran_linux-64 gxx_linux-64 是用于构建SciPy的Fortran、C和C++源代码的编译器。

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

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

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

    • git 是一个版本控制系统,用于下载和管理SciPy源代码。

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

    注解

    你可以 conda create 先是空的虚拟环境,然后 conda install 软件包,但是使用您需要的所有软件包创建虚拟环境比单独安装软件包更可取,因为这样更容易 conda 以最佳方式解决包依赖关系。

  4. 你还在基地环境中。通过输入以下命令激活您的新虚拟环境 conda activate scipydev.
    If you're working with an old version of conda, you might need to type source activate scipydev instead (see here )。请注意,每当您想要使用开发版本的SciPy时,都需要激活这个虚拟环境。

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

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

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

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

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

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

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

  12. 执行在位构建:输入 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。

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

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

  15. 在新的终端窗口中,测试您的设置。如果您激活了虚拟环境(例如 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