个性化阅读
专注于IT技术分析

Pip Python软件包管理器

本文概述

在开始之前, 让我们快速进行词汇表检查, 确定真正的” Python软件包”是什么。 Package是一个Python模块, 可以包含其他模块或递归地包含其他软件包。这是你在Python代码中导入的Python程序包。但是, 本文与此类软件包无关。

本文是关于”分发软件包”的, 这是一个版本化的存档文件, 其中包含用于分发特定发行版的Python模块, 软件包和其他资源文件(将其视为版本化项目)。归档文件是你作为最终用户从Internet下载并安装的文件-因此, 分发包对于社区共享和分发其项目至关重要。本文旨在帮助你了解各种可用的工具, 这些工具使你在使用和维护许多Python程序包时更加轻松, 这些程序包作为数据科学家和程序员通常会遇到。

分发软件包通常被称为”软件包”或”分发”。但是, 上下文很重要, 以免将其与”导入包”(通常也称为”包”)或另一种发行版(例如Linux发行版或计算机语言发行版)混淆。单一术语”分布”。

因此, 既然”包”的含义是在本文的上下文中确定的, 那么让我们开始…。

在本教程中, 你将看到较少的可执行代码, 但更多的命令和概念讨论, 涉及与包管理相关的Python社区中使用的不同技术Python术语。你将从零开始, 开始安装Python。然后, 你将看到什么是Python包索引。然后, 你将发现从Distutils开始的可用于包管理的各种工具-在这里你将看到如何注册和上传包。

接下来, 你将看到Setuptools, 还将了解Easy Install(与setuptools捆绑在一起的软件包管理器)。还将向你介绍一些旧的和现已废弃的工具, 例如Distribute和Distutils2。然后, 你将看到Pip。你还将被介绍两个概念:Python蛋和Wheels。最后, 你将看到Conda, 它是Anaconda中包含的软件包和环境管理系统, 它是针对数据科学和机器学习相关应用程序的Python和R编程语言的免费开源发行版。

请务必查看我们的Python数据科学入门课程。

安装Python

好吧, 第一步将是真正确保你的系统中安装了Python。确保你可以从命令行运行Python。你可以通过输入以下内容来检查此内容以及安装的Python版本:

python --version

如果出现以下错误:

>>> python --version
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'python' is not defined

或这个:

python --version
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

<ipython-input-3-a4637bbefc43> in <module>()
----> 1 python --version


NameError: name 'python' is not defined

这是因为预期的代码要在操作系统的终端(也称为外壳程序或控制台)中运行。正确执行此操作并安装了Python后, 你将获得如下输出:Python 3.6.3。这确定你的系统中安装了Python版本3.6.3。

如果你没有Python, 请继续安装最新的3.x版本。你可以使用Hitchhiker的Python指南来逐步完成这些步骤。

如果已安装Python, 但使用的是增强型外壳, 如IPython或Jupyter笔记本, 则可以在命令前加上!!查看你正在使用的Python版本:

!python --version
Python 3.5.2 :: Continuum Analytics, Inc.

Python包索引

Python软件包索引(缩写为PyPI), 也称为Cheese Shop, 是Python的官方第三方软件存储库。它主要以称为” sdists”(源发行版)或预编译轮的档案形式托管Python软件包(你将在稍后看到)。一句话:PyPI是Python社区所接受的庞大的在线模块存储库。

通过PyPI, 你可以将任意数量的发行版本提交到索引。如果你更改特定版本的元数据, 则可以再次提交它, 索引将被更新。 PyPI保留每个提交的(名称, 版本)组合的记录。作为最终用户, 你可以通过关键字或针对元数据的过滤器来搜索软件包, 从而使其成为索引。通过PyPI可以访问超过113, 000个Python软件包。

为什么要注意PyPI?因为它描述了用’distutils’打包的发行版, 以及如果软件包作者愿意的话, 像打包文件这样的软件包数据。默认情况下, 它也是” easy_install”和” Pip”在其中搜索可用软件包的地方(有关更多内容, 请稍后介绍)。

Distutils

Distutils是用于Python打包的标准工具。它包含在标准库中(Python 2和Python 3.0至3.6)。 Distutils公开了两个用于将包数据提交给PyPI的命令:用于将元数据提交给PyPI的register命令和用于提交分发文件的upload命令。

注册你的包裹

distutils命令寄存器用于将你的发行版本的元数据提交到索引。你可以使用以下命令调用它:

python setup.py register

然后将提示你登录或注册, 以便能够提交你的分发程序包。你可以向索引提交任意数量的发行版本。如果你更改特定版本的元数据, 则可以再次提交它, 索引将被更新。

上传你的包裹

distutils命令上载将分发文件推送到PyPI。有关步骤和distutils的更多详细信息, 请查看此页面。

Setuptools

Setuptools是一个软件包开发过程库(或工具, 就像Distutils一样), 旨在方便打包Python项目。它是对Python distutils的增强的集合, 使你可以更轻松地构建和分发Python发行版, 尤其是依赖于其他软件包的发行版。

为什么Setuptools和Disutils共存?

本质上是因为Python核心团队起草了责任划分。他们为自己保留了”核心标准”和”最少必要的编译”部分-开发distutils, 同时将超出该标准的所有功能(扩展的编译器/软件包格式/其他支持)留给第三方。 Setuptools是第三方库, 不是由核心Python团队开发的。因此, 未包含在标准Python库中。

构建和分发程序包

查看开发人员指南部分, 以了解有关安装setuptools来构建和分发软件包的更多信息。在本教程中, 让我们尝试将更多的精力集中在使你可以轻松管理Python软件包的工具上。

简易安装

简易安装(easy_install)是与setuptools捆绑在一起的Python软件包管理器。它会自动为你下载, 构建, 安装和管理Python软件包。有关每个受支持平台的下载链接和安装说明, 请转到setuptools PyPI页面。

对于easy_install的基本用法, 你只需要提供源代码分发的文件名或URL。简易安装接受URL, 文件名, PyPI软件包名称(distutils”发行”名称)和软件包+版本说明符。它将尝试查找符合你条件的最新可用版本。在下载或处理下载的文件时, Easy Install可以识别带有.tgz, .tar, .tar.gz, .tar.bz2或.zip扩展名的distutils源分发文件。它还处理已构建的.egg发行版以及使用distutils构建的.win32.exe安装程序。

默认情况下, 软件包会安装到正在运行的Python安装的site-packages目录中。默认情况下, site-packages是python搜索路径的一部分, 并且是手动构建的python软件包的目标目录。此后安装的模块可以轻松导入。你可以使用-s或–script-dir选项覆盖它。

让我们来看一些使用easy_install下载, 安装, 升级甚至删除软件包的命令:

按名称安装软件包, 在PyPI中搜索最新版本。这将自动下载, 构建和安装该软件包:

>>easy_install PackageName

通过在给定的下载页面上找到链接, 按名称和版本安装或升级软件包:

>>easy_install -f URL PackageName

将已安装的软件包升级到PyPI上列出的最新版本:

>>easy_install --upgrade PackageName

否则, 要升级到特定版本, 你可以键入软件包名称, 然后输入所需的版本:

>>easy_install "PackageName==2.0"

如果已升级软件包, 但想还原到以前安装的版本, 则可以使用以下命令:

>>easy_install PackageName==1.3.4

要卸载软件包, 请首先运行以下命令:

>>easy_install -m PackageName

这样可以确保Python不会搜索你打算删除的软件包。完成此操作后, 你可以安全地删除.egg文件或目录以及要删除的所有脚本。如果你用其他版本替换了软件包, 则可以通过删除PackageName-versioninfo.egg文件或目录(位于安装目录中)来删除不需要的软件包。

弃用/废弃的工具

分发

Distribute是setuptools的一个分支, 并重新合并到setuptools 0.7中。它共享相同的名称空间, 因此, 如果你已经安装了分发版, 则导入设置工具实际上将导入与分发版一起分发的软件包。你无需再使用”分发”。实际上, Pypi上可用的版本只是安装setuptools的兼容性层。

Distutils2

Distutils2试图充分利用Distutils, Setuptools和Distribute, 并成为Python标准库中包含的标准工具。这个想法是Distutils2将针对旧的Python版本进行分发, 而Distutils2将被重命名为Python 3.3的包装, 它将包含在其标准库中。这些计划没有按计划进行, 目前Distutils2是一个废弃的项目。最新版本于2012年3月发布, 其Pypi主页最终进行了更新以反映其死亡, 并带有tl; dr:”暂时使用setuptools和pip, 请勿使用distutils2″。

Pip

Pip是安装和管理以Python编写并在Python Package Index(PyPI)中找到的软件包的最著名, 使用最广泛的软件包管理系统之一。 Pip是一个递归首字母缩写, 可以代表” Pip Installs软件包”或” Pip Installs Python”。或者, pip代表”首选安装程序”。

默认情况下, Python 2.7.9和更高版本(在python2系列上)以及Python 3.4和更高版本包括pip(对于Python 3为pip3)。它是你先前看到的easy_install的显式替换和间接后继。请查看pip vs easy_install上的Python打包用户指南页面, 以进行详细讨论。

为确保你可以从命令行运行pip, 请输入:

>>pip --version

如果未安装pip, 则可以通过系统软件包管理器或调用cURL(客户端数据传输工具)来进行安装:

>>curl https://bootstrap.pypa.io/get-pip.py | python

当你使用它时, 最好更新pip, setuptools和wheel:

>>python -m pip install --upgrade pip setuptools wheel

虽然仅pip就足以从预构建的二进制归档文件(可以执行的最终文件)中进行安装。输出是已加载到CPU中并已执行的机器指令), setuptools和wheel的更新副本项目对于确保你也可以从源归档文件进行安装很有用。

让我们看看一些方便的命令来使用pip:

要安装最新版本的软件包:

>>pip install 'PackageName'

要安装特定版本, 请键入软件包名称, 然后输入所需的版本:

>>pip install 'PackageName==1.4'

要将已安装的软件包从PyPI升级到最新版本:

>>pip install --upgrade PackageName

pip的安装/卸载非常简单:

>>pip uninstall PackageName

Pip具有通过需求文件:requirements.txt管理软件包的完整列表和相应版本号的功能。通常, 此文件概述了该项目使用的所有pip包。你可以使用以下方法在该文件中安装所有内容:

>>pip install -r requirements.txt

你可以在此处阅读有关需求文件的更多信息。

打包格式:egg和wheel

关于这两个术语的提及很多:” Python egg”和” wheel”。它们都是打包格式, 旨在支持不需要构建或编译的安装工件的用例。在测试和生产工作流程中, 构建和编译可能会非常昂贵。

egg格式(.egg)由setuptools于2004年引入。它是一种逻辑结构, 体现了特定版本的Python项目的发布, 包括其代码, 资源和元数据。基本上是带有元数据的.zip文件夹。它们遵循与Java中的.jar文件相同的概念。

wheel是一种ZIP格式的存档, 具有特殊格式的文件名和.whl扩展名。 Wheel格式是PEP 427在2012年引入的。之前, 使用pip或easy_install安装python软件包可能会要求你编译一堆基础代码, 从而延长导入时间。 Wheel提供了为目标体系结构和操作系统预编译代码的选项。轮子是Python发布的新标准, 旨在代替egg。 pip> = 1.4和setuptools> = 0.8提供支持。

你可以在此处阅读Wheel和Egg之间的重要区别。

Conda

Conda是一个开源软件包管理系统和环境管理系统。它由Continuum Analytics维护。 Conda可以快速安装, 运行和更新软件包及其依赖项。它也是环境管理器, 可以轻松地在本地计算机上的环境中创建, 保存, 加载和切换。

尽管Conda是为Python程序创建的, 但它可以打包和分发适用于多种语言的软件。 conda软件包和环境管理器包含在所有版本的Anaconda中-这是针对数据科学和机器学习相关应用程序的Python和R编程语言的免费开放源代码发行。此外, Anaconda与pip仍具有有用的交互作用, 使你可以安装conda中不可用的任何其他库。

因此, 下载并使用Anaconda是一个好主意。该页面将引导你完成Anaconda安装, 整个过程非常简单。成功安装Anaconda后, 如果你使用的是Windows, 请转到”开始”菜单并搜索, 打开Anaconda Prompt。如果你使用的是MacOS或Linux, 请打开终端窗口。然后继续输入:

>>conda --version

这将验证conda已在系统上安装并运行, 并显示已安装的版本号。要将conda更新到当前版本, 请键入以下内容:

>>conda update conda

Conda允许你创建单独的环境, 其中包含不会与其他环境交互的文件, 程序包及其依赖项。当你开始使用conda时, 你已经有一个名为base的默认环境。但是不要将程序放入你的基本环境中。而是, 创建单独的环境以使你的程序彼此隔离。你可以在此处了解有关在Conda中创建环境以及管理python和python软件包的更多信息。

打包全部

在本教程中, 你已经了解了很多术语和工具。稍事休息, 让一切沉浸其中。这是管理Python软件包的所有工具的概述, 最终使用什么很大程度上取决于手头的任务和所使用的环境。最后, 没有一个适合所有人的包装经理, 你必须自己挑选毒药。

请务必查看srcmini的数据科学中级Python课程, 以了解有关Python的更多信息。

赞(0)
未经允许不得转载:srcmini » Pip Python软件包管理器

评论 抢沙发

评论前必须登录!