常用的 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


目录
相关文章
|
28天前
|
IDE 开发工具 索引
在Python中安装第三方库
在Python中安装第三方库
397 30
|
26天前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
42 4
|
25天前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
1天前
|
Linux Python
Linux 安装python3.7.6
本教程介绍在Linux系统上安装Python 3.7.6的步骤。首先使用`yum`安装依赖环境,包括zlib、openssl等开发库。接着通过`wget`下载Python 3.7.6源码包并解压。创建目标文件夹`/usr/local/python3`后,进入解压目录执行配置、编译和安装命令。最后设置软链接,使`python3`和`pip3`命令生效。
|
25天前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
17天前
|
Python 容器
[oeasy]python048_用变量赋值_连等赋值_解包赋值_unpack_assignment _
本文介绍了Python中变量赋值的不同方式,包括使用字面量和另一个变量进行赋值。通过`id()`函数展示了变量在内存中的唯一地址,并探讨了变量、模块、函数及类类型的地址特性。文章还讲解了连等赋值和解包赋值的概念,以及如何查看已声明的变量。最后总结了所有对象(如变量、模块、函数、类)都有其类型且在内存中有唯一的引用地址,构成了Python系统的基石。
26 5
|
26天前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
38 5
|
25天前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
25天前
|
存储 JSON 网络安全
使用 EFS 在 AWS Lambda 上安装 Python 依赖项
使用 aws lambda 时,开发人员面临的常见挑战之一是管理大型 python 依赖项。
30 1
|
2月前
|
Python
pip批量安装Python库 requirement.txt 离线环境无互联网环境下pip安装Python库
pip批量安装Python库 requirement.txt 离线环境无互联网环境下pip安装Python库
157 3
下一篇
DataWorks