一本传统的食谱包含作者感兴趣的烹饪食谱,并可以帮助读者扩大准备食物的范围。 许多人可能认为,食谱的最终产品就是菜肴本身,而且人们可以以几乎相同的方式来阅读这本书。 每章均指导读者将数据科学流水线的各个阶段应用于具有不同目标的不同数据集。 同样,就像在烹饪中一样,最终产品可以简单地是应用于特定集合的分析。
但是,我们希望您能有更广阔的视野。 数据科学家边做边学,确保每次迭代和假设都能改善从业者的知识基础。 希望通过使用两种不同的编程语言(R 和 Python)通过数据科学管道获取多个数据集,我们希望您将开始抽象出分析模式,看到更大的图景,并对这一相当模棱两可的数据领域有更深入的了解 科学。
我们还希望您知道,与烹饪食谱不同,数据科学食谱是模棱两可的。 当厨师开始制作一道菜时,他们会清楚地看到成品的外观。 对于数据科学家来说,情况通常是不同的。 在一定的时间和资源的情况下,人们并不总是知道所讨论的数据集的外观,以及可能或不可能的情况。 食谱本质上是一种挖掘数据并开始向正确的问题提问,以尽可能完成最佳菜肴的途径。
如果您来自统计学或数学背景,那么所显示的建模技术本身可能不会使您兴奋。 注意有多少方法可以克服数据科学管道中的实际问题,例如加载大型数据集和使用可伸缩工具来适应已知技术来创建数据应用,交互式图形和网页,而不是报告和论文。 我们希望这些方面能够增进您对数据科学的理解和理解,并将好的数据科学应用于您的领域。
从事实践的数据科学家需要大量多样的工具来完成工作。 数据从业人员使用各种各样的工具来抓取,清理,可视化,建模并执行一百万个不同的任务。 如果您问大多数使用数据的人,您将了解到此工具集中最重要的组件是用于执行数据分析和建模的语言。 确定特定任务的最佳编程语言类似于询问哪种世界宗教是正确的,而流血事件却略有减少。
在本书中,我们将注意力集中在用于数据分析的两种备受推崇但又截然不同的语言(R 和 Python)上,由您自己决定使用哪种语言。 我们将通过提示每种语言适合各种任务的方式来为您提供帮助,并且我们将比较和对比每种语言在同一数据集上完成的类似分析。
当您学习新的概念和技术时,总会遇到深度与广度的问题。 在固定的时间和精力下,您应该努力实现 R 和 Python 的中等熟练度,还是应该全部使用一种语言? 根据我们的专业经验,我们强烈建议您以掌握一种语言并对另一种语言有所了解为目标。 这是否意味着跳过有关特定语言的章节? 绝对不! 但是,在阅读本书时,请选择一种语言并进行更深层次的挖掘,不仅要提高会话能力,还要提高流利程度。
为了准备本章,请确保您有足够的带宽在合理的时间内下载多达几 GB 的软件。
在开始安装任何软件之前,我们需要了解将在整本书中用于数据分析的可重复步骤。
以下是数据分析的五个关键步骤:
- 获取:管道中的第一步是从各种来源获取数据,包括关系数据库,NoSQL 和文档存储,Web 抓取以及分布式数据库,例如 Hadoop 平台上的 HDFS,RESTful API ,平面文件,希望不是这种情况(PDF)。
- 探索和理解:第二步是要了解您将使用的数据以及如何收集它们。 这通常需要进行大量探索。
- 修补,争执和操纵:此步骤通常是管道中最耗时且最重要的单个步骤。 数据几乎永远不会以所需的形式进行所需的分析。
- 分析和建模:这是有趣的部分,数据科学家可以探索数据中变量之间的统计关系,并从中提取出自己的机器学习技巧,以对这些因素进行聚类,分类或分类。 数据并创建预测模型以展望未来。
- 沟通和运营:在管道的最后,我们需要以引人注目的形式和结构将数据返回,有时交给我们自己以告知下一次迭代,有时又交给完全不同的读者。 生成的数据产品可以是简单的一次性报告,也可以是可扩展的 Web 产品,将被成千上万的用户交互使用。
尽管前面的列表是带编号的列表,但不要假定每个项目都严格遵守此精确的线性顺序。 实际上,敏捷数据科学家知道此过程是高度迭代的。 通常,数据探查会告知必须如何清理数据,从而可以进行更多的探查和更深入的了解。 这些步骤中的哪一个首先出现通常取决于您对数据的初步了解。 如果您与每天生产和捕获数据的系统一起工作,则除非生产系统出了问题,否则最初的数据探索和理解阶段可能会很短。 相反,如果您没有背景知识的数据集,则数据探索和理解阶段可能需要相当长的时间(以及许多非编程步骤,例如与系统开发人员交谈)。
下图显示了数据科学管道:
正如您现在可能已经听说过的那样,数据整理或整理通常会占用项目时间和资源的 80%或更多。 在一个完美的世界中,我们将始终获得完美的数据。 不幸的是,从来没有这样,您将看到的数据问题实际上是无限的。 有时,数据字典可能会更改或丢失,因此完全不可能了解字段值。 某些数据字段可能包含垃圾或已与其他字段切换的值。 通过测试的 Web 应用更新可能会导致一个小错误,阻止收集数据,从而导致数十万行丢失。 如果可能出错,则可能是在某个时候。 您分析的数据是所有这些错误的总和。
最后一步,沟通和运营,绝对至关重要,但其复杂性却常常不被人们充分理解。 请注意,管道中的最后一步没有标题为“数据可视化”,也没有围绕简单地创建漂亮和/或引人注目的内容而展开,这本身就是一个复杂的主题。 取而代之的是,数据可视化将成为一个更大的故事的一部分,我们将把数据与数据编织在一起。 有些人甚至说,最终结果总是一个争论,因为除非您试图说服某个人或某组特定观点,否则进行所有这些努力是没有意义的。
直接来自 R 项目的 R 是用于统计计算和图形的语言和环境,它已成为统计和数据分析的实际语言之一。 对我们来说,这将是本书上半部分使用的默认工具。
准备工作确保您与 Internet 的宽带连接良好,因为您可能必须下载多达 200 MB 的软件。
安装 R 很容易; 使用以下步骤:
截至 2017 年 6 月,R 的最新版本为 2017 年 4 月起的版本 3.4.0。
-
下载后,请按照 CRAN 提供的出色说明将软件安装在您各自的平台上。 对于 Windows 和 Mac,只需双击下载的安装包。
-
安装了 R 后,继续启动它。 您应该看到一个类似于以下屏幕截图所示的窗口:
-
可在这个页面上获得对 CRAN 的重要修改,它是 Microsoft 对 R 软件的贡献。 实际上,作者是这种变体的拥护者,并强烈推荐 Microsoft 版本,因为它已经多次证明 MRAN 版本比 CRAN 版本快得多,并且所有代码在这两个版本上都运行相同 变体。 因此,有一个使用 MRAN R 版本的额外理由。
-
您可以停止下载 R,但是会错过为 R 构建的出色的集成开发环境(IDE),称为 RStudio。 访问这个页面下载 RStudio,然后按照在线安装说明进行操作。
-
安装完成后,继续运行 RStudio。 以下屏幕快照显示了我们作者的自定义 RStudio 配置之一,其中
Console
面板位于左上角,编辑器位于右上角,当前变量列表位于左下角, 以及当前目录在右下角:
R 是出现在 1993 年的一种解释语言,它是 70 年代从 Bell Labs 出现的 S 统计编程语言的实现(S-PLUS 是 S 的商业实现)。 R,由于其开放源代码许可而有时被称为 GNU S,是一种域特定语言(DSL),致力于统计分析和可视化。 尽管您可以使用 R 进行许多操作,似乎与统计分析(包括 Web 抓取)没有直接关系,但它仍然是特定于域的语言,并不打算用于一般用途。
R 也受 CRAN(综合 R 存档网络)支持。 CRAN 包含一个可访问的 R 早期版本的存档,可根据要复制的软件的较早版本进行分析。 此外,CRAN 包含数百个免费下载的软件包,从而极大地扩展了 R 的功能。实际上,R 已成为包括统计在内的多个学术领域的默认开发平台,从而导致在 R 中首先实现了最新,最好的统计算法。 在这个页面的 Microsoft 变体中提供了更快的 R 版本。
RStudio 可在 GNU Affero 通用公共许可证 v3 下获得,并且是开源的,可以免费使用。 该公司的 RStudio,Inc.提供用于 R 的其他工具和服务以及商业支持。
您还可以参考以下内容:
R 具有数量惊人的库,这些库增加了它的功能。 实际上,R 已经成为全国许多大学统计部门的默认语言。 因此,R 通常是将首先实现新开发的统计算法和技术的语言。 幸运的是,如以下各节所示,安装其他库很容易。
只要您已安装 R 或 RStudio,就应该准备就绪。
R 使安装其他软件包变得简单:
- 启动 R 交互式环境,或者最好是 RStudio。
- 让我们安装
ggplot2
。 键入以下命令,然后按 输入 键:
install.packages("ggplot2")
请注意,在本书的其余部分中,假定当我们指定输入一行文本时,它会隐式地跟随着击回车键或输入键盘上的键
- 现在,当您向下滚动屏幕时,应该会看到类似于以下内容的文本:
trying URL 'http://cran.rstudio.com/bin/macosx/contrib/3.0/
ggplot2_0.9.3.1.tgz'Content type 'application/x-gzip' length 2650041 bytes (2.5
Mb)
opened URL
==================================================
downloaded 2.5 Mb
The downloaded binary packages are in
/var/folders/db/z54jmrxn4y9bjtv8zn_1zlb00000gn/T//Rtmpw0N1dA/
downloaded_packages
- 您可能已经注意到,您需要知道要安装的软件包的确切名称,在这种情况下为
ggplot2
。 访问这个页面以确保您使用正确的名称。 - RStudio 提供了一种更简单的安装软件包的机制。 如果尚未打开 RStudio,请打开它。
- 转到菜单栏中的
Tools
,然后选择Install Packages ...
。 如以下屏幕截图所示,将弹出一个新窗口:
- 当您开始在
Packages
字段中输入内容时,RStudio 将为您显示可能的软件包列表。 该字段的自动完成功能简化了库的安装。 更好的是,如果有一个相关的类似名称的库,或者该库的较早版本或较新版本具有相同的名称前几个字母,您将看到它。 - 让我们安装一些我们强烈推荐的软件包。 在 R 提示符下,键入以下命令:
install.packages("lubridate")
install.packages("plyr")
install.packages("reshape2")
您可以从这个页面下载从您的帐户购买的所有 Packt 书籍的示例代码文件。 如果您在其他地方购买了此书,则可以访问这个页面并注册以将文件直接通过电子邮件发送给您。
无论您使用 RStudio 的图形界面还是install.packages
命令,您都可以执行相同的操作。 您告诉 R 搜索为特定版本的 R 构建的适当的库。发出命令时,R 报告在 CRAN 中找到与库匹配的位置的 URL 以及之后的二进制包的位置。 下载。
R 的社区是其优势之一,如果我们不简要提及两件事,我们将被忽略。 R-bloggers 是一个网站,汇集了 750 多个不同博客中与 R 相关的新闻和教程。 如果您对 R 有一些疑问,那么这里是寻找更多信息的好地方。 Stack Overflow 网站是一个很好的地方,可以使用标签rstats
在 R 上提问和找到答案。
最后,随着您对 R 的熟练程度的提高,您可能会考虑构建其他人可以使用的 R 包。 提供有关库构建过程的深入教程超出了本书的范围,但是请记住,社区意见书是 R 运动的核心。
您还可以参考以下内容:
- 请参阅我希望早些时候了解的《R 程序包》文章
- R-bloggers 网站
- [创建 R 包的教程](http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf%20
- 2013 年(1 月至 5 月)的前 100 个 R 包
- Learning R 博客网站
对我们来说幸运的是,大多数版本的 Mac OS X 和 Linux 都预装了 Python(最新版本的 Ubuntu 和 Fedora 都开箱即用了 Python 2.7 或更高版本)。 因此,除了检查是否已安装所有东西外,我们实际上对这个食谱没有太多工作。
在本书中,我们将使用 Python 3.4.0。
只要确保您有良好的 Internet 连接,以防我们需要安装任何东西。
在命令提示符下执行以下步骤:
- 打开一个新的“终端”窗口,然后键入以下命令:
which python
- 如果您安装了 Python,则应该看到类似以下内容的内容:
/usr/bin/python
- 接下来,使用以下命令检查您正在运行哪个版本:
python --version
如果您打算使用 OS X,出于某些原因,您可能希望在计算机上设置单独的 Python 发行版。 首先,每次 Apple 升级您的操作系统时,它将并且将淘汰您已安装的 Python 软件包,从而迫使所有先前安装的软件包重新安装。 其次,新版本的 Python 发布的频率要比 Apple 更新 OS X 随附的 Python 发行版本的频率高。因此,如果您想保持 Python 版本的最新优势,最好安装自己的发行版本。 最后,Apple 的 Python 版本与正式的 Python 版本略有不同,并且位于硬盘驱动器上的非标准位置。
在线上有许多教程可帮助您逐步在 Mac 上安装和设置单独的 Python 发行版。 我们建议您在这个页面上找到出色的指南,以在 Mac 上安装单独的 Python 发行版。
您还可以参考以下内容:
在 Windows 系统上安装 Python 很复杂,这给您提供了三个不同的选择。 首先,您可以选择在这个页面上使用标准 Windows 版本和 Python.org 的可执行安装程序。 此路由的潜在问题是目录结构以及配置和设置的路径与标准 Python 安装不同。 结果,每个已安装的 Python 软件包(将会有很多)都可能存在路径问题。 此外,大多数在线教程和答案都不适用于 Windows 环境,您将只能使用自己的设备来解决问题。 对于以这种方式在 Windows 上安装 Python 的学生,我们目睹了无数教程结束问题。 除非您是专家,否则我们建议您不要选择此选项。
第二个选项是安装预捆绑的 Python 发行版,该发行版在一次安装中包含所有与科学,数字和数据相关的软件包。 有两个合适的包,一个来自 Enthought,另一个来自 Continuum Analytics。 Enthought 提供了适用于 Windows 的 32 位和 64 位版本的 Python 3.5 的 Canopy 发行版。 该软件的免费版本 Canopy Express 附带了 50 多个预配置的 Python 软件包,因此它们可以直接使用,包括 pandas,NumPy,SciPy,IPython 和 matplotlib,它们足以满足以下目的: 这本书。 Canopy Express 还带有其自己的 IDE,使人联想到 MATLAB 或 RStudio。
Continuum Analytics 提供了 Anaconda,这是一个完全免费(甚至用于商业用途)的 Python 2.7 和 3.6 发行版,其中包含 100 多个用于科学,数学,工程和数据分析的 Python 软件包。 Anaconda 包含 NumPy,SciPy,pandas,IPython,matplotlib 等,并且对于我们在本书中所做的工作来说应该绰绰有余。
对于纯粹主义者而言,第三个也是最好的选择是使用来自 Oracle 软件的免费 VirtualBox 在 Windows 中运行虚拟 Linux 机器。 这将使您能够在所需的任何 Linux 版本中运行 Python。 这种虚拟机方法的缺点是运行速度比本地软件慢,您将不得不习惯于通过 Linux 命令行进行导航,这是任何实践的数据科学家都应该具备的技能。
执行以下步骤以使用 VirtualBox 安装 Python:
- 如果选择在虚拟 Linux 机器上运行 Python,请访问这个页面从 Oracle 软件免费下载 VirtualBox。
- 请遵循 Windows 的详细安装说明。
- 继续按照说明进行操作,并遍历标题为 1.6 的部分。 启动 VirtualBox,1.7 创建您的第一个虚拟机,然后 1.8 运行您的虚拟机。
- 虚拟机运行后,转到“在 Linux 和 Mac OS X 上安装 Python”配方。
如果要改为在本地安装 Continuum Analytics 的 Anaconda 发行版,请按照下列步骤操作:
- 如果您选择安装 Continuum Analytics 的 Anaconda 发行版,请转到这个页面并选择该软件的 64 位或 32 位版本(最好使用 64 位版本 )在 Windows 安装程序下。
- 请按照这个页面上 Windows 的详细安装说明进行操作。
对于许多读者而言,根据他们的经验,在预打包的 Python 发行版和运行虚拟机之间进行选择可能很容易。 如果您正在为这个决定而苦苦挣扎,请继续阅读。 如果您来自纯 Windows 背景并且/或者没有太多使用*nix
命令行的经验,那么基于虚拟机的路由将具有挑战性,并将迫使您极大地扩展自己的技能。 这需要花费大量精力和毅力,这对整个数据科学都是有用的(请相信我们)。 如果您有时间和/或知识,那么在虚拟机中运行所有内容将使您进一步走上成为数据科学家的道路,并且很可能使您的代码更易于在生产环境中部署。 如果没有,您可以选择备份计划并使用 Anaconda 发行版,就像许多人选择的那样。
在本书的其余部分,我们将始终首先包含面向 Linux / Mac OS X 的 Python 软件包安装说明,其次是补充的 Anaconda 安装说明。 因此,对于 Windows 用户,我们将假设您已经走了 Linux 虚拟机的路线,或者使用了 Anaconda 发行版。 如果您选择走另一条路,我们为您的冒险精神鼓掌,并祝您好运! 让 Google 与您同在。
您还可以参考以下内容:
尽管通常说 Python 包含电池,但是有一些密钥库确实使 Python 的数据处理能力更上一层楼。 在此食谱中,我们将安装有时称为 SciPy 堆栈的堆栈,其中包括 NumPy,SciPy,pandas,matplotlib 和 Jupyter。
本食谱假设您已安装标准 Python。
如果在上一节中,您决定安装 Anaconda 发行版(或包含所需库的其他 Python 发行版),则可以跳过此食谱。
要检查您是否安装了特定的 Python 软件包,请启动 Python 解释器并尝试导入该软件包。 如果成功,则该软件包在您的计算机上可用。 另外,您可能需要通过sudo
命令对您的计算机进行 root 访问。
以下步骤将允许您在 Linux 上安装 Python 数据堆栈:
- 在 Linux 上安装此堆栈时,必须知道所使用的 Linux 发行版。 Linux 的风格通常决定了您将使用的软件包管理系统,选项包括
apt-get
,yum
和rpm
。 - 打开浏览器并导航到这个页面,其中包含大多数平台的详细说明。
- 如果不同,这些说明可能会更改,并且应取代此处提供的说明:
- 打开外壳。
- 如果您使用的是 Ubuntu 或 Debian,请输入以下内容:
sudo apt-get install build-essential python-dev python-
setuptools python-numpy python-scipy python-matplotlib ipython
ipython-notebook python-pandas python-sympy python-nose
sudo yum install numpy scipy python-matplotlib ipython python-pandas sympy python-nose
- 您可以使用多种选项在运行 OS X 的 Macintosh 上安装 Python 数据堆栈。这些选项是:
- 第一个选项是为每个工具下载预安装的安装程序(
.dmg
),并像安装其他 Mac 应用一样安装它们(建议这样做)。 - 第二个选项是,如果您的系统上有 MacPorts,MacPorts 是基于命令行的安装软件系统。 您可能还需要带有已安装的命令行工具的 XCode。 如果是这样,您可以输入:
- 第一个选项是为每个工具下载预安装的安装程序(
sudo port install py27-numpy py27-scipy py27-matplotlib py27- ipython +notebook py27-pandas py27-sympy py27-nose
由于系统上将安装大量文件,因此上述所有选项都将花费一些时间。
由于编译依赖性(包括对 Fortran 的需求),安装 SciPy 堆栈在历史上一直具有挑战性。 因此,我们不建议您从源代码进行编译和安装,除非您对此感到满意。
现在,更好的问题是,您刚刚安装了什么? 我们安装了 NumPy,SciPy,matplotlib,IPython,IPython Notebook,熊猫,SymPy 和鼻子的最新版本。 以下是它们的描述:
- SciPy:这是一个基于 Python 的开放源码软件生态系统,用于数学,科学和工程,并且包含许多用于机器学习,科学计算和建模的有用库。
- NumPy:这是基础的 Python 程序包,可在 Python 中提供数值计算,类似于 C,并且速度非常快,尤其是在使用多维数组和线性代数运算时。 NumPy 是 Python 可以执行其他解释或脚本语言无法执行的高效,大规模数值计算的原因。
- matplotlib:这是一个完善且广泛的 Python 2D 绘图库,MATLAB 用户会很熟悉。
- IPython:这为 Python 提供了丰富而强大的交互式 shell。 它是标准 Python Read-Eval-Print Loop(REPL)的替代品,以及许多其他工具。
- Jupyter Notebook:这是一个基于浏览器的工具,可以执行和记录在 Python 中完成的工作,并支持代码,格式化文本,降价,图形,图像,声音,电影和数学表达式。
- 大熊猫:这提供了一个健壮的数据框对象和许多其他工具,可让您轻松快捷地进行传统数据和统计分析。
- 鼻子:这是一个测试工具,扩展了 Python 标准库中的单元测试框架。
我们将在介绍它们的章节中更详细地讨论各种程序包。 但是,如果我们至少没有提到 Python IDE,我们将被忽略。 通常,我们建议使用您喜欢的编程文本编辑器来代替功能强大的 Python IDE。 这可以包括来自 GitHub 的开源 Atom,出色的 Sublime Text 编辑器或 Ruby 人群的最爱 TextMate。 Vim 和 Emacs 都是绝佳的选择,不仅因为它们的强大功能,还因为它们可以轻松地用于在远程服务器上编辑文件,这是数据科学家的一项常见任务。 这些编辑器中的每一个都可以使用可配置代码完成,突出显示,掉毛等功能的插件进行高度配置。 如果必须具有 IDE,请从 JetBrains,Spyder 和 Ninja-IDE 的 IDE 向导中查看 PyCharm(社区版是免费的)。 您会发现大多数 Python IDE 都比数据工作更适合于 Web 开发。
您也可以参考以下内容:
- 有关熊猫的更多信息,请参考《Python 数据分析库》文章
- NumPy 网站
- SciPy 网站
- matplotlib 网站
- IPython 网站
- 《SciPy 历史》文章
- MacPorts 主页
- XCode 网页
- XCode 下载页面
在本书中,您还需要一些其他的 Python 库。 正如 R 为社区构建的软件包提供中央存储库一样,Python 也以 Python 软件包索引(PyPI)的形式提供。 截至 2014 年 8 月 28 日,PyPI 中有 48,054 个软件包。
此食谱只需要一个合理的 Internet 连接即可。 除非另有说明,否则这些说明假定您使用的是系统随附的默认 Python 发行版,而不是 Anaconda。
以下步骤将向您展示如何下载 Python 软件包并从命令行安装它:
- 在您希望保留下载位置的地方下载该软件包的源代码。
- 解压缩包。
- 打开一个终端窗口。
- 导航到源代码的基本目录。
- 输入以下命令:
python setup.py install
- 如果需要 root 用户访问权限,请键入以下命令:
sudo python setup.py install
要使用 pip,这是安装 Python 软件包的最简便的现代方法,请按照以下步骤操作:
- 首先,让我们通过打开终端并启动 Python 解释器来检查是否已经安装了 pip。 在解释器中,键入:
>>>import pip
- 如果没有错误,则说明已安装 pip,然后可以继续执行步骤 5。如果看到错误,请快速安装 pip。
- 从这个页面下载文件到您的计算机上。
- 打开一个终端窗口,导航到下载的文件,然后键入:
python get-pip.py
或者,您可以键入以下命令:
sudo python get-pip.py
- 一旦安装了 pip,请确保您在系统命令提示符下。
- 如果您使用的是默认的 Python 系统发行版,请输入以下内容:
pip install networkx
或者,您可以键入以下命令:
sudo pip install networkx
- 如果使用 Anaconda 发行版,请输入以下命令:
conda install networkx
- 现在,让我们尝试安装另一个软件包
ggplot
。 不管您使用什么发行版,都键入以下命令:
pip install ggplot
或者,您可以键入以下命令:
sudo pip install ggplot
您至少有两个选择来安装 Python 软件包。 使用先前的老式方法,您下载源代码并将其解压缩到本地计算机上。 接下来,使用install
标志运行包含的setup.py
脚本。 如果需要,可以在文本编辑器中打开setup.py
脚本,然后更详细地了解该脚本在做什么。 您可能需要sudo
命令,具体取决于当前用户的系统特权。
作为第二个选项,我们利用 pip 安装程序,该程序自动从远程存储库中获取软件包并将其安装到本地计算机上,以供系统级 Python 安装使用。 如果可用,这是首选方法。
pip
具有功能,因此我们建议您在线阅读用户指南。 要特别注意非常有用的pip freeze > requirements.txt
功能,以便您可以与同事交流有关外部依赖项的信息。
最后,conda
是 Anaconda Python 发行版的软件包管理器和 pip 替代品,或者用其主页的名称是跨平台的,与 Python 无关的二进制软件包管理器。 Conda 具有超越 Python 语言的崇高抱负。 如果您使用的是 Anaconda,建议您进一步阅读conda
可以作为默认软件包管理器使用的功能,而不要使用 pip。
您还可以参考以下内容:
virtualenv 是一种可转换的 Python 工具。 一旦开始使用它,您将永远不会回头。 virtualenv 创建一个本地环境,并安装了自己的 Python 发行版。 从外壳激活此环境后,您可以使用pip install
轻松地将软件包安装到新的本地 Python 中。
起初,这听起来可能很奇怪。 为什么有人要这样做? 这不仅可以帮助您处理 Python 中的软件包依赖关系和版本问题,而且还可以使您快速进行实验而不会破坏任何重要内容。 想象一下,您构建了一个需要awesome_template
库版本为 0.8 的 Web 应用,但是您的新数据产品需要awesome_template
库版本为 1.2。 你做什么工作? 使用 virtualenv,您可以同时拥有两者。
作为另一个用例,如果您在特定计算机上没有管理员权限,会发生什么情况? 您无法使用分析所需的sudo pip install
安装软件包,那么您该怎么办? 如果您使用 virtualenv,则没关系。
虚拟环境是软件开发人员用来有效协作的开发工具。 环境确保该软件在具有不同依赖性的不同计算机(例如,从生产服务器到开发服务器)上运行。 该环境还会提醒其他开发人员要开发的软件的需求。 Python 的 virtualenv 确保所创建的软件在其自己的整体环境中,可以独立进行测试,并可以协同构建。
假设您已经完成了上一个食谱,那么就可以开始使用该食谱了。
使用以下步骤安装和测试虚拟环境:
- 打开命令行外壳,然后键入以下命令:
pip install virtualenv
或者,您可以键入以下命令:
sudo pip install virtualenv
- 安装完成后,在命令窗口中键入
virtualenv
,您将获得以下屏幕快照中显示的信息:
- 使用以下命令创建一个临时目录并将位置更改为该目录:
mkdir temp
cd temp
- 在目录中,创建第一个名为
venv
的虚拟环境:
virtualenv venv
- 您应该看到类似于以下内容的文本:
New python executable in venv/bin/python
Installing setuptools, pip...done.
- 新的本地 Python 发行版现已可用。 要使用它,我们需要使用以下命令激活
venv
:
source ./venv/bin/activate
- 激活的脚本不可执行,必须使用
source
命令激活。 另外,请注意,您的 Shell 的命令提示符可能已更改,并以venv
前缀表示您现在正在新的虚拟环境中工作。 - 要检查这一事实,请使用
which
查看 Python 的位置,如下所示:
which python
您应该看到以下输出:
/path/to/your/temp/venv/bin/python
因此,在激活虚拟环境后键入python
时,将运行本地 Python。
- 接下来,通过键入以下内容安装一些东西:
pip install flask
Flask 是一个用 Python 编写的微型网络框架; 前面的命令将安装 Flask 使用的许多软件包。
- 最后,我们演示了虚拟环境和 pip 提供的版本控制功能,如下所示:
pip freeze > requirements.txt
cat requirements.txt
这将产生以下输出:
Flask==0.10.1
Jinja2==2.7.2
MarkupSafe==0.19
Werkzeug==0.9.4
itsdangerous==0.23
wsgiref==0.1.2
- 请注意,不仅会捕获每个软件包的名称,还会捕获确切的版本号。
requirements.txt
文件的优点在于,如果我们有一个新的虚拟环境,我们只需发出以下命令即可安装列出的 Python 软件包的每个指定版本:
pip install -r requirements.txt
- 要停用虚拟环境,只需在 shell 提示符下键入以下命令:
deactivate
virtualenv 使用其自己的安装目录创建自己的虚拟环境,这些目录独立于默认系统环境运行。 这使您可以尝试新库而不会污染系统级 Python 发行版。 此外,如果您有一个仅能正常运行的应用并且想要保留它,则可以通过确保该应用具有其自己的virtualenv
来实现。
virtualenv
是一种了不起的工具,对于任何 Python 程序员来说,它都是无价之宝。 但是,我们谨提请注意。 Python 提供了许多连接到 C 共享对象的工具,以提高性能。 因此,在您的虚拟环境中安装某些 Python packages
(例如 NumPy 和 SciPy)可能需要编译和安装特定于系统的外部依赖项。 即使编译成功,这些编译也可能很乏味,这是维护虚拟环境的原因之一。 更糟糕的是,缺少依存关系将导致编译失败,并产生错误,要求您对外来错误消息,过时的 make 文件和复杂的依存关系链进行故障排除。 即使对于最资深的数据科学家来说,这也可能是艰巨的。
一种快速的解决方案是使用程序包管理器将复杂的库安装到系统环境中(对于 Linux 为 Aptitude 或 Yum,对于 OS X 为 Homebrew 或 MacPorts,Windows 通常已经具有已编译的安装程序)。 这些工具使用第三方软件包的预编译形式。 一旦在系统环境中安装了这些 Python 软件包,就可以在初始化virtualenv
时使用--system-site-packages
标志。 该标志告诉virtualenv
工具使用已经安装的系统站点程序包,并且避免了需要进行编译的附加安装的需要。 为了指定可能已经存在于系统中的特定于您的环境的软件包(例如,当您希望使用较新版本的软件包时),请使用pip install -I
将依赖项安装到virtualenv
中,并忽略全局软件包。 当您仅在系统上安装大型软件包,但将virtualenv
用于其他类型的开发时,此技术最有效。
在本书的其余部分中,我们将假定您正在使用virtualenv
,并准备好使用本章中提到的工具。 因此,我们不会强制或详细讨论虚拟环境的使用。 只需将虚拟环境视为安全网,即可单独执行本书中列出的食谱。
您还可以参考以下内容: