常用的 Python 工具:使用 virtualenv、使用 Pip 进行安装和管理包

简介: 常用的 Python 工具:使用 virtualenv、使用 Pip 进行安装和管理包

本文介绍了Python开发中常用的工具,如virtualenv和pip,强调了它们在安装、管理包和创建隔离环境方面的优势。还提供了在CentOS上安装Python和相关工具的步骤,以及如何在实际项目中使用这些工具进行包管理。

简介


在使用 Python 进行应用程序开发时,经常会听到一些工具在各个地方或开源代码中被频繁提及。尽管这些工具被广泛使用,但有时很难找到一个好的手册来逐步指导你,而这对于熟悉这些重要且必需的工具至关重要。

在这篇 DigitalOcean 文章中,我们旨在向您介绍不仅基础知识,还有在实际场景中使用这些流行的 Python 工具和项目的逻辑。我们将从下载和安装一些常见的库开始,设置和使用虚拟环境(使用 virtualenv),以及管理自己应用程序的开发和生产所需的包。

本文旨在面向初学者以及那些希望获得更深入知识的人。如果您想了解更多,请随时在下面的评论部分提出建议。

Python 在 CentOS 上


请记住,如果您使用的是 CentOS/RHEL 系统,应避免使用操作系统自带的默认 Python 解释器。相反,您应该选择自己安装 Python。

如果您还没有这样做,并且想了解如何操作,请参阅我们的教程:在开始之前,请查看我们的教程:在 CentOS 6.4 上设置 Python 2.7.6 和 3.3.3。

同样,在 CentOS 上使用自定义 Python 安装安装 pipvirtualenv,您可以按照该文章中的说明进行操作。

Python 和包


尽管 Python 应用程序可以由单个文件构成,通常它们由一系列函数、对象(类)、方便的工具和当然,分布在多个文件中的变量组成,这些文件被放置在模块中。这些模块一起组成了所谓的****。

传统的安装包的方式涉及首先找到它,然后下载。这听起来很简单,因为实际上在 Python 中许多事情都是如此,但它并不完美。

当文件准备好并解压缩后,使用**distutils**模块,您可以通过调用 setup.py 来安装它:

安装包的示例:

# 示例:cd [包名]
 cd a_package
 python setup.py install

distutils(分发工具)是用于打包和分发代码的工具集。它默认与 Python 一起提供(即包含在标准库中)。

尽管上述过程的简单性,如果在安装抽象化的挑战存在于流程的其他地方,那么它就没有用处:查找和管理它们。这就是包管理通过工具进行的地方 - 带来了许多好处,比如:

  • 卸载(例如 pip uninstall package_x),
  • 版本控制(例如 pip install django==x),
  • 以及自动依赖管理(因为包可能依赖于其他包)。

包管理


Python 中的包可以是工具、库、框架和应用程序。鉴于该语言的流行和美丽,有成千上万的包可供您为自己的项目使用。

包管理工具


最常见的 Python 包管理器是**pipeasy_install**。它们都旨在帮助用户完成以下任务:

  • 下载、安装和卸载
  • 构建
  • 管理 Python 包等等

从外部看,它们两者可能看起来做着相同的事情,它们对共同库**setuptools**的依赖增加了这种观念。

然而,在这种情况下,隐藏在眼前的东西使得它们之间存在差异 - 而且还有很多差异。

pip vs easy_install


为此任务创建的第一个工具是easy_install。尽管与手动操作相比,它是一种解脱和愉悦,但随着时间的推移,它在某些方面已被证明存在问题。这为pip的开发创造了基础,它是另一个包管理器。

pip(由项目本身定义)是easy_install的替代品,相比前者带来了许多优点,包括但不限于:

  • 在安装之前下载所有内容
  • 在过程中提供有用的反馈
  • 保持正在执行的操作历史记录
  • 提供有用的错误消息,遵循 Python 传统
  • 与**virtualenv**相辅相成,并且与之非常良好地配合

要了解有关pip的更多信息,请考虑阅读其介绍,位于 PyPI 包索引,点击此处。

详细的 pip 使用方法


在本节中,我们将讨论获取pip的必要依赖项,安装其最新版本,然后逐步介绍其提供的核心功能,如安装卸载冻结管理要求

我何时会使用pip

正如在介绍中承诺的那样,我们旨在为您提供真实场景的示例。

想象一下,您正在开发一个小型应用程序。您已经制定了一项路线图,一切都进行得很顺利。然后,您发现了一个库(或模块),如果将其包含在您的应用程序中,它可以帮助您很多。您可以按照我们所解释的传统方式进行下载。但是,一旦您不仅需要处理一个包,而是 3 个、4 个甚至 20 个包,这个过程就变得繁琐。包括管理它们(例如更新、卸载、替换、使用不同版本),您可以看到您需要处理的问题,而使用pip,这些问题就变得多余。

安装 pip


为了安装 pip,我们首先需要处理它的依赖关系。不过不用担心,这很容易。

setuptools

正如上面所解释的,pip 的一个依赖是 setuptools 库。它建立在 Python 的 分发工具 工具集(称为 distutils)的(标准)功能之上。鉴于 distils 是默认提供的,我们所需要的只剩下 setuptools

我们将使用 curl 安全地下载 setuptools 的设置文件。cURL 是一个系统库,允许在各种协议上进行数据传输(即数据交换的通用语言,如 HTTP)。它将验证源自的 SSL 证书并将数据传递给 Python 解释器

这些设置文件,Python 解释器将执行,自动化安装过程,因为它们在我们的系统上设置了最新的稳定版本。

执行以下命令:

curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python -

这个安装使我们能够在整个系统中全局使用 pip。然而,这不是安装任何其他包的首选方式。推荐的方式是始终使用自包含的 Python 环境,virtualenv。我们将在下一节中讨论它。

注意: 你可能需要明确获得 超级用户 权限才能继续下载。在这种情况下,考虑使用:

curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | sudo python -

在安装了它的单个依赖之后,我们现在可以继续下载和设置 pip

我们将再次使用 curl 安全地下载并安装设置文件。

执行以下命令:

curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python -

pip 的默认安装文件夹位于:

/usr/local/bin

为了在不指定完整路径的情况下使用它,必须将其附加到 PATH

更新 PATH

export PATH="/usr/local/bin:$PATH"

完成这一步后,我们就可以开始使用 pip 了。

使用 pip


使用 pip 真的很有趣,可以说是无忧无虑的。如果你过去曾经遇到过极其不必要的问题,甚至不明白为什么,pip 将确保它们在这里最小化。

使用 pip 安装包


pip 可以做很多事情,但可以毫不夸张地说,它最常用的功能是 安装包。它有几种处理这项工作的方式。

查找并安装包:

# 示例:pip install [包名]
 # 让我们安装优秀的 *requests* 库
 pip install requests

查找并安装特定版本:

# 示例:pip install [包名]==[版本]
 # 让我们安装 requests 的 2.0.0 版本
 pip install requests==2.0.0

从 URL 或 VCS 存储库安装:

# 示例:pip install [url]
 # 让我们安装 virtualenv
 pip install https://github.com/pypa/virtualenv/tarball/1.9.X

virtualenv 中安装:

# 示例:pip install [env 名称] [包名]
 # 这将在环境内安装,或创建一个环境
 # 让我们在名为 *venv* 的虚拟环境中安装 requests
 pip install -E venv requests

使用 pip 卸载包:


pip 的第二常用功能可能是卸载包。

卸载包:

# 示例:pip uninstall [包名]
 # 让我们移除 requests 库
 pip uninstall requests

使用 pip 升级包


如果你打算卸载以安装应用程序的新版本,你可以尝试 升级

升级包:

# 示例:pip install --upgrade [包名]
 # 让我们升级 requests 库
 pip install --upgrade requests

使用 pip 搜索包


在决定移除或升级包之前,你可能需要先 搜索 一个。

搜索包:

# 示例:pip search [包名]
 # 让我们找到所有 django 包
 # 这可能需要一些时间(有很多!)
 pip search django

使用 pip 创建已安装包的列表


pip 最真正出色和救命的能力之一是能够轻松地创建已安装的 包列表 的列表(“冻结”)。根据你的 Python 环境(无论是虚拟还是全局),pip 将使用一个命令创建列出所有已安装包的文件。

创建一个新的列表(“冻结”):

注意: 这个命令将在当前工作目录中输出一个文件。

# 示例:pip freeze > [文件名.ext]
 # 让我们列出当前安装的所有包
 pip freeze > package_list.txt

在模板之上创建一个列表(“冻结”):

注意: 这个命令将在当前工作目录中输出一个文件。

# 示例:pip freeze -r [现有文件.ext] > [文件名.ext]
 # 让我们在上次冻结后附加新安装的包
 pip freeze package_list.txt > package_list_new.txt

使用 pip 安装列表中的所有软件包


当您在应用程序中工作时,最好是在虚拟环境中,您将在其中安装所有依赖项(必需软件包)。在使用 freeze 提取出它们的列表后,您可以使用 install 再次安装它们。

安装列表中的所有软件包(“freeze”):

# 示例:pip install -r [文件名.ext]
 # 让我们从先前的示例中重新安装所有软件包
 pip install -r package_list_new.txt

一个全面的 virtualenv 指南


让我们首先定义一下 virtualenv 到底是什么,以及它适用的情况。

virtualenv:

在 Python 的世界中,一个 环境 是一个包含了一个 Python 项目(应用程序)运行所需的一切内容的文件夹(目录),以有组织、隔离的方式运行。当它被初始化时,它会自动带有自己的 Python 解释器 - 一个创建它时使用的副本 - 以及它自己的 pip

virtualenv 解决了许多问题:

  • 为 Python 项目创建一个新的、隔离的环境
  • 能够在不需要管理员/超级用户权限的情况下下载软件包
  • 轻松打包应用程序
  • 创建属于使用 pip 创建的单个项目的依赖项列表
  • 使用 pip 创建的要求文件轻松恢复依赖项
  • 在系统之间实现可移植性

使用 virtualenv 是处理 Python 项目的 推荐 方法,无论您可能忙于处理多少个项目。它非常易于使用,是一个非常好的工具。与 pip 结合使用时效果非常好。

我们将从系统中安装 virtualenv 开始。

安装 virtualenv


为了安装 virtualenv,我们将使用 pip 来帮助。我们将其安装为全局可用的包,以供 Python 解释器运行。

有两种方法可以获取该应用程序。您能够获得的版本取决于您选择的方法。

最简单的方法是使用 pip 进行搜索、下载和安装。这可能 会为您提供最新的稳定版本。

使用 pip 下载 virtualenv

# 示例:[sudo] pip install virtualenv
 sudo pip install virtualenv

使用 curl 下载最新版本:

virtualenv 的最新版本是 1.11.X

# 示例:[sudo] pip install [github 仓库]/[版本]
 sudo pip install https://github.com/pypa/virtualenv/tarball/1.1.X

使用 virtualenv


使用该工具包括让它创建一个包含 Python 解释器和 pip 副本的文件夹。之后,为了使用它,我们需要指定该解释器的位置或者 activate 它。

您使用虚拟环境内的解释器安装的所有应用程序都将放置在该位置。

当您使用 pip 创建它们的列表时,只有文件夹内的应用程序会被编译到文件中。

记住: 当您完成一个环境的工作后,在切换到另一个环境之前 - 或者使用全局安装的环境时 - 您需要确保 deactivate 它。

创建 / 初始化 虚拟环境(virtualenv)


使用与运行它的相同解释器创建环境:

# 示例:virtualenv [文件夹(env.)名称]
 # 让我们创建一个名为 *my_app* 的环境
 virtualenv my_app

使用自定义 Python 解释器创建环境:

# 示例:virtualenv --python=[loc/to/python/] [env. 名称]
 virtualenv --python=/opt/python-3.3/bin/python my_app

激活 虚拟环境

# 示例:source [env. 名称]/bin/activate
 # 让我们激活刚刚创建的 Python 环境
 source my_app/bin/activate

在不激活的 虚拟环境 中工作


出于各种原因,您可能选择在使用之前不激活环境。这样可以增加您运行的命令的灵活性,但是,您需要确保每次都针对正确的解释器。

# 示例:[env. 名称]/bin/python [参数]
 my_app/bin/python python_script.py

在不激活的环境中使用 pip 安装

# 示例:[env. 名称]/bin/pip [命令] [参数]
 # 在不激活环境的情况下安装 requests 库
 my_app/bin/pip install requests

停用 虚拟环境

# 示例:deactivate
 # 让我们停用之前的环境
 deactivate


目录
相关文章
|
1月前
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
247 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
|
1月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
179 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
21天前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
24 2
|
21天前
|
C语言 开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第21天】在Python的世界里,代码的优雅与效率同样重要。列表推导式(List Comprehensions)作为一种强大而简洁的工具,允许开发者通过一行代码完成对列表的复杂操作。本文将深入探讨列表推导式的使用方法、性能考量以及它如何提升代码的可读性和效率。
|
1月前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
46 2
|
1月前
|
Python
Python 三方库下载安装
Python 三方库下载安装
26 1
|
1月前
|
机器学习/深度学习 缓存 PyTorch
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
这篇文章是关于如何下载、安装和配置Miniconda,以及如何使用Miniconda创建和管理Python环境的详细指南。
348 0
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
|
18天前
|
C语言 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第24天】在Python编程的世界中,追求代码的简洁性和可读性是永恒的主题。列表推导式(List Comprehensions)作为Python语言的一个特色功能,提供了一种优雅且高效的方法来创建和处理列表。本文将深入探讨列表推导式的使用场景、语法结构以及如何通过它简化日常编程任务。
|
1月前
|
Python
【python从入门到精通】-- 第一战:安装python
【python从入门到精通】-- 第一战:安装python
49 0
|
1月前
|
机器学习/深度学习 缓存 Linux
python环境学习:pip介绍,pip 和 conda的区别和联系。哪个更好使用?pip创建虚拟环境并解释venv模块,pip的常用命令,conda的常用命令。
本文介绍了Python的包管理工具pip和环境管理器conda的区别与联系。pip主要用于安装和管理Python包,而conda不仅管理Python包,还能管理其他语言的包,并提供强大的环境管理功能。文章还讨论了pip创建虚拟环境的方法,以及pip和conda的常用命令。作者推荐使用conda安装科学计算和数据分析包,而pip则用于安装无法通过conda获取的包。
61 0