常用 Python 工具:使用 virtualenv、使用 Pip 安装和管理软件包

简介


当涉及到使用Python时,特别是在应用程序开发领域,您会看到在不同的地方或开放源代码中经常提到某些工具。尽管使用非常普遍,但不幸的是,有时很难拿到一本好的手册来指导你完成每一步,这在熟悉这些重要和必要的工具时绝对至关重要。

在这篇DigitalOcean文章中,我们的目标不仅是向您介绍基本知识,还将向您介绍流行的Python工具和项背后的逻辑,因为我们将深入研究如何在现实生活场景中使用它们。我们将从下载和安装一些通用库开始,设置和使用虚拟环境(使用Virtualenv),并管理用于开发和生产您自己的应用程序的包。

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

CentOS上的Python


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

如果你还没有这样做,并想了解如何学习,请参阅我们的教程:如何在CentOS 6.4上设置Python2.7.6和3.3.3,然后再开始。

同样,为了在CentOS上安装pip 和** Virtualenv** ,您可以按照该文章中的说明进行操作。

Python和包


虽然Python应用程序可以由单个 文件组成,但它们通常由一系列函数、对象(类)、方便的工具组成,当然还有分布在** 多个** 文件(S)中的变量,放置在** 模块_内。这些模块共同组成了称为** Package** 的组件。

传统的安装程序包的方法是先找到它,然后再下载。它听起来又软又简单,因为它实际上很像Python中的许多东西--但它并不完美。

当文件准备好并解压缩后,使用**distutils** 模块,调用setup.py即可安装:

包安装示例:

1# Example: cd [package name]
2 cd a_package
3 python setup.py install

distutils (分发实用程序)是用于打包和分发代码的工具集。默认情况下,它随Python一起提供(即包含在_标准库_中)。

尽管上面解释的过程很简单,但如果在该过程中的其他地方存在从安装中抽象出来的挑战:查找和管理它们 ,这是没有用的。这就是通过工具进行包管理的用武之地-带来了几个好处,例如:

  • 卸载(如pip uninstall Package_x),
  • 版本控制(如pip安装Django==x),
  • 和自动依赖管理(因为包可以依赖于其他包)。

包管理


Python中的包可以是工具、库、框架和应用程序。鉴于该语言的受欢迎程度和美感,您可以在自己的项目中使用数以万计的包。

套餐管理工具


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

  • 下载、安装和卸载
  • 大楼
  • 管理Python包和更多内容

从外部看,它们似乎都在做相同的事情,它们对公共库的共同依赖**setupTools** 增加了这一概念。

然而,在这种情况下,是眼睛看不见的东西造成了不同--还有很多东西。

pip vs Easy_Install


为该任务创建的第一个工具是Easy_Install 。虽然与手工做任何事情相比,使用它是一种解脱和乐趣,但随着时间的推移,它在某些方面被证明是有问题的。这为另一个包管理器** pip** 的开发奠定了基础。

pip (由项目本身定义)是** Easy_Install** 的替代,它带来了许多好处,包括但不限于:

  • 安装前下载所有内容
  • 在过程中提供有用的反馈
  • 保存正在采取的行动的历史记录
  • 遵循Python传统提供有用的错误消息
  • 补充 Virtualenv** 并很好地使用它

要了解有关_pip_的更多信息,请考虑通过单击here.阅读其简介

透彻_pip_How-to


在本节中,我们将讨论如何获取_pip_的必要依赖项,安装其最新构建,然后演练提供的核心功能,如安装 、** 卸载** 、** 冻结** 和** 管理需求** 。

何时使用_pip_?

正如在引言中承诺的那样,我们的目标是为您提供真实生活场景的示例。

假设您正在开发一个小型应用程序。你给自己设定了一个路线图,一切都很顺利。然后,您会发现一个库(或模块),如果您将其包含在应用程序中,则会对您有很大的帮助。您可以按照我们所解释的传统方式下载它。然而,一旦你需要处理的不是一个而是3个、4个甚至20个包,这个过程就会变得很麻烦。包括管理它们(例如更新,卸载,替换,使用不同的版本),你可以看到你需要处理的问题,这些问题使用包管理器_pip_变得多余。

安装_pip_


为了安装_pip_,我们首先需要处理它的依赖项。不过,别担心,这很容易。

setuptools

如上所述,pip_的依赖项之一是**setupTools** 库。它构建在名为** distutils** 的(标准)功能的Python的分发实用程序工具集上。鉴于默认情况下提供了Distils,我们所需要的就是_setuptools

我们将使用curl安全下载setuptools 的安装文件。** cURL** 是一个系统库,允许通过各种协议(即应用程序之间数据交换的通用语言,如HTTP)进行数据传输。它将验证来自源的_SSL_证书,并将数据传递给_Python解释器。

在我们的系统上设置最新的稳定版本时,这些设置文件(由Python解释器执行)会自动执行安装过程。

执行以下命令:

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

此安装使我们能够在整个系统中全局使用PIP。但是,这不是安装任何其他程序包的首选方式。建议始终使用自包含的Python环境Virtualenv 。我们将在下一节讨论这个问题。

注意: 您可能需要显式获得_super user_特权才能继续下载。在这种情况下,请考虑使用:

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

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

我们将再次使用curl来安全地下载和安装安装文件。

执行以下命令:

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

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

1/usr/local/bin

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

Updating PATH

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

完成此步骤后,我们就可以使用_pip_了。

Using_pip_


使用_pip真的很有趣,可以被认为是没有头痛的。如果您在过去处理过极其不必要的问题,并且甚至不理解原因,那么_pip_将确保在这里为您将它们保持在最低限度。

使用_pip_安装包


pip可以做很多事情,但如果说它最常用的功能是 安装软件包 ,这并不是一个错误。有几种方法可以为您处理这项工作。

查找并安装包:

1# Example: pip install [package name]
2 # Let's install the excellent *requests* library
3 pip install requests

查找并安装特定版本:

1# Example: pip install [package name]==[version]
2 # Let's install version 2.0.0. of requests
3 pip install requests==2.0.0

URL或VCS仓库安装:

1# Example: pip install [url]
2 # Let's install virtualenv
3 pip install https://github.com/pypa/virtualenv/tarball/1.9.X

安装在a_Virtualenv_中:

1# Example: pip install [env name] [package name]
2 # This will either install inside an environment, or create one
3 # Let's install requests inside a virtualenv called *venv*
4 pip install -E venv requests

使用_pip_卸载包:


_pip_的第二个最常见的功能可能是卸载包。

卸载包:

1# Example: pip uninstall [package name]
2 # Let's remove requests library
3 pip uninstall requests

使用_pip_升级套餐


如果您正在考虑卸载以安装较新版本的应用程序,可以尝试_Upgrading_。

升级套餐:

1# Example: pip install --upgrade [package name]
2 # Let's upgrade requests library
3 pip install --upgrade requests

使用_pip_搜索套餐


在决定删除或升级程序包之前,您可能觉得需要先搜索一个程序包。

正在搜索包:

1# Example: pip search [package name]
2 # Let's find all django packages
3 # This might take a while (there's tonnes of them!)
4 pip search django

使用_pip_创建已安装包列表


Pip最出色和最救人的能力之一是能够轻松地创建已安装程序包 的列表()。这也通常被称为** 要求** 。根据您的Python环境(无论是虚拟环境还是全局环境),_pip_将创建一个文件,列出使用单个命令安装的所有包。

创建新列表(冻结):

注意: 此命令将输出当前工作目录中的文件。

1# Example: pip freeze > [file name.ext]
2 # Let's list all the packages currently installed
3 pip freeze > package_list.txt

在模板顶部创建列表():

注意: 此命令将输出当前工作目录中的文件。

1# Example: pip freeze -r [existing file.ext] > [filename.ext]
2 # Let's append new packages installed after the last freeze
3 pip freeze package_list.txt > package_list_new.txt

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


当您使用应用程序时--最好是在虚拟环境中--您将在那里安装它的所有依赖项(Required Packages )。使用** 冻结** 解压后,您可以使用** 安装** 重新安装它们。

从列表中安装所有包():

1# Example: pip install -r [file name.ext]
2 # Let's install back all the packages from the previous example
3 pip install -r package_list_new.txt

A TROUST_Virtualenv_How-to


让我们从定义Virtualenv 到底是什么以及它在什么情况下派上用场开始。

Virtualenv:

在Python的世界中,Environment 是一个文件夹(目录),其中包含了Python项目(应用程序)以有组织的、独立的方式运行所需的一切。当它被启动时,它自动带有自己的Python解释器--一个用于创建它的解释器的副本--以及它自己的_pip_。

virtualenv 解决了许多问题:

  • 为Python项目创建一个新鲜、隔离的环境
  • 无需管理员/sudo权限即可下载程序包
  • 轻松打包应用程序
  • 创建属于使用_pip_创建的单个项目的依赖项列表
  • 使用_pip_创建的需求文件轻松恢复依赖关系
  • 让位于跨系统的可移植性

无论您可能忙于处理多少个项目,使用_Virtualenv_都是**推荐的处理Python项目的方式。它非常容易使用,是一次性使用的绝佳工具。当它与_pip_结合在一起时,它真的会产生奇迹。

我们将从安装Virtualenv 系统开始。

安装virtualenv


为了安装_Virtualenv_,我们将调用in_pip_以获得帮助。我们将把它作为一个全局可用的包安装,以供Python解释器运行。

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

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

Downding_Virtualenv_Using_pip_:

1# Example: [sudo] pip install virtualenv
2 sudo pip install virtualenv

使用_curl_: 下载最新版本

_virtualenv_的最新版本是1.11.X

1# Example: [sudo] pip install [github repo]/[version]
2 sudo pip install https://github.com/pypa/virtualenv/tarball/1.1.X

Using_Virtualenv_


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

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

当您使用_pip_创建它们的列表时,只有文件夹中的那些将被编译到文件中。

请记住: 当您使用完一个环境后,在切换到另一个环境之前-或者使用全局安装的环境-您需要确保将其`停用‘。

创建/发起_虚拟环境_(Virtualenv)


使用相同的解释器创建环境:

1# Example: virtualenv [folder (env.) name]
2 # Let's create an environment called *my_app*
3 virtualenv my_app

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

1# Example: virtualenv --python=[loc/to/python/] [env. name]
2 virtualenv --python=/opt/python-3.3/bin/python my_app

激活虚拟环境_

1# Example: source [env. name]/bin/activate
2 # Let's activate the Python environment we just created
3 source my_app/bin/activate

不开机即可使用虚拟环境


出于各种原因,您可能会选择在使用该环境之前不将其激活。这为您运行的命令带来了更大的灵活性,但是,您需要确保每次都以正确的解释器为目标。

1# Example: [env. name]/bin/python [arguments]
2 my_app/bin/python python_script.py

在未激活的情况下在环境中使用_pip_安装

1# Example: [env. name]/bin/pip [command] [arguements]
2 # Let's install requests library without activating the env.
3 my_app/bin/pip install requests

停用虚拟环境(_V):

1# Example: deactivate
2 # Let's deactivate the environment from earlier
3 deactivate
Submitted by: O.S. Tezer
comments powered by Disqus