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

本文档介绍了如何在您的SciPy开发环境中使用Docker容器。这些指示应该被视为正在进行的工作。

码头工人

Docker是用于在主机操作系统内运行Linux虚拟机的程序。根据 Docker website

Docker容器映像是一个轻量级、独立、可执行的软件包,包括运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。容器镜像在运行时会变成容器,如果是Docker容器-镜像在Docker Engine上运行时会变成容器。集装化软件可用于Linux和基于Windows的应用程序,无论主机基础架构如何,都将始终运行相同的软件。

Docker使开发环境的设置变得简单而可靠:我们提供带有合适编译器和Scipy的构建时依赖项的Docker映像。然后,您可以使用Docker引擎将镜像作为容器执行,添加最新开发版本的SciPy,并构建SciPy。

有适用于多种操作系统的Docker主机,包括:MacOS、Linux和Windows。请按照您的操作系统的相应安装说明进行操作,网址为 docs.docker.com

注解

如果您的操作系统版本不符合Docker Desktop的要求,如Windows 10家庭版,请尝试 Docker Toolbox

克隆SciPy

在启动SciPy的Docker容器之前,您应该在您的计算机上创建一份SciPy源代码的副本。这样,您将能够从本机操作系统和容器中访问相同的文件。

注解

下面我们将使用 终端窗口 作为包括Windows命令提示符的统称。

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

  2. 浏览到您的叉子。你的fork会有一个类似于https://github.com/andyfaff/scipy,的网址,除了用你的gihub用户名代替“andyfaff”。

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

  4. 在计算机上方便的位置为SciPy源代码创建一个文件夹。 Navigate 添加到终端窗口中。

  5. 输入命令 git clone 后跟您的fork的.git URL。请注意,这将在终端的工作目录中创建一个 scipy 包含SciPy源代码的文件夹。这假设您有一个 git 命令行客户端;如果没有,您可以按照以下步骤操作 instructions to install a git client

启动Docker

有关Docker入门的说明,请参阅 here 。在确保Docker正常工作后,请按照下面的说明启动Docker容器以进行SciPy开发。每次要启动容器时都要遵循相同的说明,因为在关闭容器之后,对容器所做的更改不会持久。

  1. 在终端窗口中,更改目录(使用 cd 命令)添加到包含该文件的SciPy git存储库的根文件夹中 setup.py

  2. 确保Docker Desktop(或Docker Toolbox)正在运行,并通过在终端窗口中输入以下命令启动SciPy Docker容器:

    docker run -it --rm -v $PWD/:/home/scipy scipy/scipy-dev:<image-tag>
    

    如果您使用的是Windows cmd,则可以改为运行以下命令:

    docker run -it --rm -v %cd%:/home/scipy scipy/scipy-dev:<image-tag>
    

    此命令将启动 (run )互动 (-it )名为的码头集装箱 scipy-dev (基于Ubuntu焦点) scipy Docker Hub repository 。当Docker容器启动时, scipy 主机当前目录中的 ($PWD )在容器中作为以下形式可用 /home/scipy 。您从容器对该目录中的任何文件所做的更改在主机中也可见,反之亦然。

  3. 您现在应该在容器中,其中包含类似以下内容的内容::

    (base) root@468e1b9564e4:/home/scipy#
    

    作为提示。请注意 (base) 一开始,因为我们使用的是Conda。

  4. 激活 scipy-dev CONDA环境::

    conda activate scipy-dev
    

    此环境具有您开始使用/构建SciPy所需的所有依赖项。

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

  6. 通过输入以下命令执行在位生成:

    python setup.py build_ext --inplace
    

    这将编译SciPy附带的C、C++和Fortran代码。 setup.py 是SciPy根目录中的脚本,这就是为什么您必须在SciPy根目录中才能调用它的原因。 build_ext 是在中定义的命令 setup.py ,以及 --inplace 是一个选项,我们将使用它来确保编译在您已有的SciPy目录中进行,而不是在您计算机上的其他文件夹中进行。

  7. 通过输入以下命令测试内部版本:

    python runtests.py -v
    

    runtests.py 是SciPy根目录中的另一个脚本。它运行一套测试来确保SciPy按其应有的方式工作,并且 -v 激活 –verbose 选项以显示所有测试输出。

  8. 如果你想 build the documentation 或者从本网站根目录以外的任何目录导入本网站,您应该设置本网站以供开发:

    conda develop .
    

    哪里 . 指的是当前目录(在本例中 home/scipy )。

从这里,您可以启动Python控制台(例如,输入 python )或从命令行执行Python脚本(例如, python scriptname.py )。

您可以在中对文件进行更改 scipy 目录中,这些更改将反映在容器中。或者,您可以使用 vi 容器内的文本编辑器进行更改。退出容器时,不会保留容器内所做的任何更改;只保留对已装入卷内的文件/文件夹所做的更改。如果您想对本网站项目做出更改,请参阅 开发工作流

Docker映像包含使用SciPy所需的所有编译器和依赖项。类似于 开发环境快速入门指南(Ubuntu) ,Docker映像使用 Anaconda Distribution of Python 管理开发环境。