使用 Python 进行科学

作者:Joey Bernard

介绍 Anaconda,一个用于科学研究的 Python 发行版。

过去,我研究过几种使用 Python 进行科学计算的方法,但我从未真正介绍过如何设置和使用 Python 本身,以简化科学工作。Anaconda 正是为此而生。

默认安装包含大量在进行数据科学或任何其他类型的科学计算时有用的 Python 模块。安装相对容易。您可以在 Anaconda 主站点上找到下载链接,您可以在 Mac OS X、Windows 和 Linux 之间进行选择。

对于 Linux,您可以选择 Python 2.X 和 3.X,以及 32 位或 64 位可执行文件。现在 Python 3.X 已经更加成熟,我的默认建议也发生了变化。除非您有特殊原因需要做不同的事情,否则我建议您默认下载和使用 Python 3.X。下载完成后,您可以将下载的文件设为可执行文件,或者像这样使用 bash 直接运行它


bash ./Anaconda3-4.4.0-Linux-x86_64.sh

您需要接受许可协议才能完成安装。

安装程序将询问安装位置,默认为您主目录中的 anaconda3 目录。它将在那里解压所有内容,然后询问您是否希望将其 bin 目录添加到您的 PATH 环境变量中。如果您使用 Python 脚本执行系统管理任务,请务必记住这一点。如果您只是运行命令 python,它将默认为 Anaconda 安装的 Python。

使 Anaconda 独有的核心技术之一是 conda 包管理系统。Conda 可用于管理安装 Anaconda 时安装的所有模块和其他软件。要管理更新,只需运行以下命令


conda update --all

您还可以通过在上述命令中使用包名称而不是 --all 选项,有选择地更新单个包。要安装新的 Python 模块,例如 opencv,请使用命令


conda install opencv

该命令将检查所有要求,并确保所有依赖项都正确。

如果您不记得(或不知道)conda 包管理方案中特定模块名称可能是什么,您可以使用如下命令进行搜索


conda search --names-only open

这将返回一个包含文本 "open" 的所有 conda 包名称的列表。

您始终可以使用 conda 的 list 选项来查看已安装的内容。

如果您已完成一些实验性代码,并且想要删除不再需要的特定包,您可以使用以下命令卸载它们


conda remove opencv

所有这些命令都有更多我在这里没有介绍的选项,但您可以通过查看它们的帮助页面找到更多详细信息。

另一个非常强大的工具,尤其是在处理多个项目时,是 Anaconda 提供的增强型虚拟环境管理。当您进行研究计算时,您通常必须首先探索您的问题领域。您肯定不希望任何这些探索性任务干扰当前正在进行的工作。因此,最好的选择是建立一个单独的、隔离的环境,在那里您可以安全地销毁事物,而不用担心丢失早期工作。这由虚拟环境处理。Python 已经有虚拟环境一段时间了,但对于某些人来说,管理它们可能不太直观。Anaconda 包含了一组工具来帮助简化此过程。

当您安装 Anaconda 时,您实际上已经在默认环境中操作。为了创建一个新的环境,您将使用命令


conda create --name project1

为了激活这个新环境,运行命令


source activate project1

现在,您所做的一切,关于 Python 和 conda 的操作,都将在这个环境中进行。例如,如果您在此环境中运行命令 conda list,您将看到没有安装任何包。如果您现在安装一个包,它将仅存在于此环境中。这样,您就可以拥有一个隔离的环境,其中仅包含您特定项目所需的 Python 模块。

如果您已经有一个正在使用的环境,但您想以某种方式扩展它,您可以使用以下命令克隆这个起始环境


conda create --name project2 --clone project1

当您使用此环境时,conda 会跟踪您对其应用的更改历史记录。您可以使用以下命令获取这些更改的列表


conda list --revisions

这样,您始终可以使用以下命令恢复到之前的某个版本(其中 X 是您要恢复到的版本号)


conda install --revision X

当您完成一天的工作后,您可以使用以下命令停用给定的环境


source deactivate

当您完全完成特定环境后,您可以使用以下命令永久删除它


conda remove --name project2 --all

请务必确保您删除的是正确的环境。您不希望意外地销毁所有辛勤工作。

您可以使用以下命令获取 conda 管理的所有环境的列表


conda info --envs

如果您正在协作处理一个项目,您可能不想将整个环境发送给其他人,因为这会占用太多带宽。您也不想发送一份关于如何重新创建它的手写说明列表,因为人类以忘记步骤而闻名。相反,conda 包含以下命令,您可以使用它来创建描述性文件


conda list --explicit >> project1.txt

您可以将此文件发送给您的协作者,并让他们运行此命令


conda create --name my_project1 --file ./project1.txt

这将允许他们重新创建您的项目环境。

所有这些命令都是在命令行中管理的,但并非每个人都习惯于以这种方式工作。对于这些人,Anaconda 包含了 Anaconda Navigator。您可以使用命令 anaconda-navigator 启动它。

图 1. Anaconda Navigator 为与您的 Anaconda 安装交互提供了一个图形界面。

在该应用程序的第一页,您将看到通过 Anaconda 提供的主要 Python 软件的启动器。这包括像 spyder、orange3 和 jupyter notebook 这样的软件包。如果它们尚未安装,您将看到一个标记为“Install”而不是“Launch”的按钮。

第二页允许您管理 Anaconda 安装中的环境。从这里,您可以管理已安装的 Python 模块,创建新环境或克隆现有环境。您甚至可以从规范文件导入项目以创建环境的新副本。窗口的右侧显示 Python 模块,您可以根据列表是已安装、可更新还是尚未安装的模块进行过滤。

图 2. Anaconda 允许管理您的安装中的环境。

还有第三页,目前处于测试阶段,用于管理项目。项目是一种组织较大的代码片段并与他人共享的方式。Anaconda Cloud 使共享变得更容易。一旦您在 Anaconda Cloud 上拥有一个帐户,您就可以上传项目、环境、软件包和 jupyter notebook。上传完成后,您可以更轻松地与全球其他人共享它们。虽然您可以在 Web 浏览器中登录并使用 Anaconda Cloud,但 Anaconda Navigator 允许您直接从那里登录,并能够与您在线存储的材料进行交互。

图 3. Anaconda 还帮助您管理更大的项目以及环境。

这是一个简短的介绍,但希望我涵盖的内容足以帮助您更好地组织您的科学代码。在未来的文章中,我计划更深入地研究如何实际使用 Python 进行一些科学工作,并利用这些组织工具。

加载 Disqus 评论