开发环境快速入门指南(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命令提示符的统称。
浏览到 SciPy repository on GitHub 和 create your own fork 。如果您还没有GitHub帐户,则需要创建一个GitHub帐户。
浏览到您的叉子。你的fork会有一个类似于https://github.com/andyfaff/scipy,的网址,除了用你的gihub用户名代替“andyfaff”。
单击大的绿色“克隆或下载”按钮,然后将“.git”URL复制到剪贴板。URL将与您的fork的URL相同,不同之处在于它将以“.git”结尾。
在计算机上方便的位置为SciPy源代码创建一个文件夹。 Navigate 添加到终端窗口中。
输入命令
git clone
后跟您的fork的.git URL。请注意,这将在终端的工作目录中创建一个scipy
包含SciPy源代码的文件夹。这假设您有一个git
命令行客户端;如果没有,您可以按照以下步骤操作 instructions to install a git client 。
启动Docker¶
有关Docker入门的说明,请参阅 here 。在确保Docker正常工作后,请按照下面的说明启动Docker容器以进行SciPy开发。每次要启动容器时都要遵循相同的说明,因为在关闭容器之后,对容器所做的更改不会持久。
在终端窗口中,更改目录(使用
cd
命令)添加到包含该文件的SciPy git存储库的根文件夹中setup.py
。确保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
。您从容器对该目录中的任何文件所做的更改在主机中也可见,反之亦然。您现在应该在容器中,其中包含类似以下内容的内容::
(base) root@468e1b9564e4:/home/scipy#
作为提示。请注意
(base)
一开始,因为我们使用的是Conda。激活
scipy-dev
CONDA环境::conda activate scipy-dev
此环境具有您开始使用/构建SciPy所需的所有依赖项。
初始化git子模块:
git submodule update --init
。通过输入以下命令执行在位生成:
python setup.py build_ext --inplace
这将编译SciPy附带的C、C++和Fortran代码。
setup.py
是SciPy根目录中的脚本,这就是为什么您必须在SciPy根目录中才能调用它的原因。build_ext
是在中定义的命令setup.py
,以及--inplace
是一个选项,我们将使用它来确保编译在您已有的SciPy目录中进行,而不是在您计算机上的其他文件夹中进行。通过输入以下命令测试内部版本:
python runtests.py -v
runtests.py
是SciPy根目录中的另一个脚本。它运行一套测试来确保SciPy按其应有的方式工作,并且-v
激活–verbose
选项以显示所有测试输出。如果你想 build the documentation 或者从本网站根目录以外的任何目录导入本网站,您应该设置本网站以供开发:
conda develop .
哪里
.
指的是当前目录(在本例中home/scipy
)。
从这里,您可以启动Python控制台(例如,输入 python
)或从命令行执行Python脚本(例如, python scriptname.py
)。
您可以在中对文件进行更改 scipy
目录中,这些更改将反映在容器中。或者,您可以使用 vi
容器内的文本编辑器进行更改。退出容器时,不会保留容器内所做的任何更改;只保留对已装入卷内的文件/文件夹所做的更改。如果您想对本网站项目做出更改,请参阅 开发工作流 。
Docker映像包含使用SciPy所需的所有编译器和依赖项。类似于 开发环境快速入门指南(Ubuntu) ,Docker映像使用 Anaconda Distribution of Python 管理开发环境。