简介
当涉及到使用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