机智如你
首发于机智如你
PHP 是世界上最好的语言之——机器学习工程师用 Python 开发环境的最佳实践

PHP 是世界上最好的语言之——机器学习工程师用 Python 开发环境的最佳实践

工程师对自己的开发环境总是有着各种各样的偏好。Vim 还是 emacs?使用 tab 还是空格缩进?Virtualenv 和 Anaconda 哪个更好?纷争不断,争论不休。今天我会与大家分享我用于搞定数据处理和机器学习的开发环境。

这是一个系列视频/文章 「AI Adventures」中的第十一篇,由 Google 的开发技术推广工程师 Yufeng Guo 主讲,用通俗易懂的语言帮助你了解人工智能和机器学习。在这一系列视频/文章中,我们将一起探秘人工智能的世界,共同品味艺术、探索科学以及掌握机器学习的工具。
第一篇:机器学习是什么?
第二篇:机器学习「七步走」
第三篇:用评估器给花卉分类
第四篇:弹性伸缩的云端托管服务
第五篇:通过 TensorBoard 将模型可视化
第六篇:通过深度神经网络再识评估器
第七篇:云端训练模型的大数据解决方案
第八篇:跟着 Google Research 体验自然语言生成
第九篇:云上的机器学习引擎
第十篇:使用 MNIST 数据集训练模型
所有的内容和视频都会首发在「机智如你」专栏,目标是发布最新与谷歌相关的机器学习、TensorFlow 相关内容,如果你有任何问题,也欢迎在留言区向我们提出反馈

你不必照着我的配置来弄,但也许其中的一些可以启发你搞定专属的开发环境。

https://www.zhihu.com/video/936637388861014016

Pip

首先要讲讲 pip。Pip 是 python 的包管理工具。Python 内置 pip 已经有一些日子了,所以如果你装了 Python,通常都会自带 pip。

Pip 被用来安装各种包,比如 tensorflow、numpy、pandas 和 jupyter,同时还会将它们的依赖一同安装好。

pip install <your_favorite_library> 

许许多多的 Python 资源都通过 pip 包的形式来传输。有时你会在某个包含 Python 脚本的目录下看到一个 requirement.txt 文件。通常,那个文件描述了当前项目所需的所有 pip 包,通过下面的命令即可将它们都安装到当前目录。

pip install -r requirements.txt. 

作为整个 pip 包生态的一份子,各种各样的版本号、以来信息充斥其中。有时我会针对不同项目使用不同版本的库(pip 包),所以我需要有一种能够针对独立环境配置一组包依赖关系的方式。

同时在一台机器上搞 Web 开发和数据科学相关研究会让你的 Python 包混乱不堪

目前有两种非常受欢迎的方式用于管理不同的 pip 包:virtualenv 和 anaconda。

Pip: Python Package Index

▍Virtualenv

Virtualenv 支持你创建可命名的“虚拟开发环境”,在其中你就能按照单独的习惯安装 pip 包了。

如果你想要针对每个环境独立控制对各类 pip 包的管理,那么这就是一款绝佳的工具比如,你可以为 Web 开发创建独立的环境,定义所需的依赖库,然后为数据相关的开发研究建立截然不同的环境。

这样一来,你再也不用顾虑各种毫无关系的依赖包在开发环境中存在,也可以创建具有专门用途的开发环境。

Virtualenv: pypa/virtualenv

▍Anaconda

如今,如果你主要从事数据相关的工作,那么 Anaconda 将会是一个不错的选择。Anaconda 由 Continuum Analytics 打造,并且是一个集成了许许多多数据相关 Python 库的发行版。

Anaconda 的流行应当归功于它只需一次安装就能得到数据科学、机器学习相关的大量工具,所以它胜在快速和简单的安装配置过程上。

与 Virtualenv 一样,Anaconda 也引入了创建专属环境的概念,也提供了每个环境下独立的依赖库版本支持。Anaconda 还有自己的包管理器:conda,你可以用它来安装依赖库。

另外,Anaconda 还允许你通过 pip 安装一些在 Anaconda 包管理器中找不到的 Python 包。

下载地址:Anaconda Download

怎么选择呢?

那么我究竟该怎么选择呢?是 Virtualenv 还是 Anaconda?我时常会跨越 Python2 和 Python3 测试新的 TensorFlow 版本和一些其他的库。

理想情况下,我能在这两者上使用那些新的库,但是某些情况下,两者都不能够满足需求。

▍再认识认识 pyenv

所以最终我选择两者都用,然后用 pyenv 这个库来管理所有的东西。从概念上来看,pyenv 处于 Virtualenv 和 Anaconda 的上层,它不仅被用于管理所使用的 Virtualenv 的虚拟环境和 Anaconda 的开发环境,还可以轻松应对 Python2 和 Python3 相关的操作。

Pyenv 所有特性中我最钟意的就是它为给定目录创建默认开发环境这一点。这就使得创建新目录时所需的开发环境实现自动配置。特别是当我每次要创建新项目的时候,这比起以往要记住如何创建复杂环境来说简单多了。


所以到底应该用哪一款 Python 包管理工具?这确实由你的日常工作流和喜好来决定。

如果你一般就是用一些核心的数据研究工具,并且不在意有一些额外多余的库安装到本地,Anaconda 是个不错的选择。选择 Anaconda 能够给你满足所有需求偏好的更简单的工作流。

但是,如果你是一个喜欢定制自己的虚拟工作环境并且对其中的依赖项有极强控制欲的人,那么诸如 Virtualenv 和 pyenv 的工具就非常适合你。

pyenv: pyenv/pyenv

小结一下

管理 Python 依赖库,绝对没有唯一最佳,除了我列举出来的之外还有许许多多非常不错的。

各种各样的工具此起彼伏,记住最重要的就是每个人都有不同的需求、偏好、用法,所以要根据自身的需求来觉得最适合你的工具是什么。

你的 Python 环境是什么样的?你是如何牢牢掌控一切的?在评论中分享你的配置吧!


感谢阅读本期 Cloud AI Adventures 分享,喜欢请点赞!如果喜欢这个系列,欢迎关注知乎专栏「机智如你」或者关注我(也可以到 Medium 关注 Yufeng GuoYouTube 频道)。


▏原文出处:Medium - Which Python package manager should you use

▏封面来源:YouTube 视频缩略图

▏视频出处:YouTube - Which Python Package Manager Should You Use?

▏字幕翻译:谷创字幕组

▏文章编辑: @杨栋

发布于 2018-01-17

文章被以下专栏收录