工程师们对于开发环境的偏好多种多样,Vim 还是 Emacs?使用 Tab 还是空格进行缩进?Virtualenv 和 Anaconda 哪个更适合?这些问题常常引发争论。明天,我将与大家分享我在数据处理和机器学习方面使用的开发环境。
这是由 Google 开发技术推广工程师 Yufeng Guo 主讲的「AI Adventures」系列视频/文章的第十一篇。这个系列通过简单易懂的语言帮助大家更好地理解和掌握人工智能和机器学习。在这个系列中,我们将探索人工智能的世界,讨论艺术、科学以及掌握机器学习的工具。
所有内容和视频将首先发布在「机智如你」专栏,旨在提供最新的与谷歌相关的机器学习和 TensorFlow 内容。如果你有任何问题,欢迎在评论区留言。
接下来,让我们谈谈 Pip。Pip 是 Python 的包管理工具,已经内置在 Python 中一段时间了,因此当你安装 Python 时,通常也会获得 Pip。Pip 用于安装各种包,如 TensorFlow、NumPy、Pandas 和 Jupyter,并会安装这些包的依赖项。
shell
pip install
许多 Python 资源都是通过 Pip 包的形式发布的。有时,你可能会在某个包含 Python 脚本的目录下看到一个 requirements.txt
文件。这个文件通常描述了项目所需的所有 Pip 包,可以通过以下命令一次性安装:
shell
pip install -r requirements.txt
作为 Pip 生态系统的一部分,各种版本和依赖信息繁杂。有时,我会根据不同项目使用不同版本的库。因此,需要一种方式来针对独立环境配置一组包依赖关系。
目前有两种流行的工具用于管理不同的 Pip 包:Virtualenv 和 Anaconda。
Virtualenv 支持创建可命名的“虚拟开发环境”,使你能够单独安装 Pip 包。如果你想对每个环境独立控制对各类 Pip 包的管理,Virtualenv 是一个很好的选择。例如,你可以为 Web 开发创建独立的环境,定义所需的依赖库,然后为数据相关的开发创建截然不同的环境。
这种方式避免了不同依赖包之间的冲突,并且可以创建具有专门用途的开发环境。
如果你主要做数据相关的工作,那么 Anaconda 是一个不错的选择。Anaconda 由 Continuum Analytics 提供,集成了许多数据相关的 Python 库。它的流行在于只需一次安装就能获得大量数据科学和机器学习工具,简化了安装过程。
与 Virtualenv 类似,Anaconda 引入了创建专属环境的概念,并提供了每个环境下独立的依赖库版本支持。Anaconda 还有自己的包管理器 Conda,可以用它来安装依赖库。此外,Anaconda 还允许你通过 Pip 安装一些不在 Conda 包管理器中的 Python 包。
那么,究竟应该选择 Virtualenv 还是 Anaconda?我经常会在 Python 2 和 Python 3 上测试新的 TensorFlow 版本和其他库。理想情况下,我希望能够在这两个平台上使用这些新库,但在某些情况下,两者都不能完全满足需求。
最终,我选择了两者都使用,并通过 Pyenv 来管理所有内容。从概念上看,Pyenv 位于 Virtualenv 和 Anaconda 的上层,不仅用于管理 Virtualenv 和 Anaconda 的虚拟环境,还可以轻松应对 Python 2 和 Python 3 的操作。
Pyenv 最吸引我的一点是它能够为给定目录创建默认开发环境,这使得在创建新目录时所需的开发环境可以自动配置。这使得创建新项目变得更加简单。
管理 Python 依赖库并没有唯一最佳的方法。除了我提到的工具外,还有很多其他优秀的工具。各种工具层出不穷,最重要的是每个人的需求、偏好和使用习惯都不同,因此要根据自己的需求选择最适合自己的工具。
你的 Python 环境是怎样的?你是如何管理这些依赖项的?请在评论中分享你的配置吧!
获取编程资料的方式:分享本文并私信【资料】。