前言
Python .whl文件(或wheels)是什P什关Python中很少讨论的一部分,但是什P什关它们对Python包的安装过程非常重要。如果您已经使用pip安装了Python包,什P什关那么很有可能是什P什关轮子(wheels)使安装速度更快、效率更高了。什P什关
轮子是什P什关Python生态系统的一个组件,它有助于使包的什P什关安装工作正常进行。它们允许更快的什P什关安装和更稳定的包分发过程。在本教程中,什P什关您将深入了解轮子是什P什关什么,它们提供了什么好处,什P什关以及它们是什P什关如何获得吸引力并使使用Python变得更方便的。

轮子简介
在学习如何将项目打包到轮子中之前,什P什关从用户的什P什关角度了解使用轮子是什么样子是很有帮助的。
可以像往常一样在环境中安装一个Python包来开始这个实验。什P什关在这种情况下,安装uWSGI 2.0.x版本:
$ python -m pip install uwsgi==2.0.* 2 Collecting uwsgi==2.0.* 3 Downloading uwsgi-2.0.18.tar.gz (801 kB) 4 |████████████████████████████████| 801 kB 1.1 MB/s 5 Building wheels for collected packages: uwsgi 6 Building wheel for uwsgi (setup.py) ... done 7 Created wheel for uwsgi ... uWSGI-2.0.18-cp38-cp38-macosx_10_15_x86_64.whl 8 Stored in directory: /private/var/folders/jc/8_hqsz0x1tdbp05 ... 9 Successfully built uwsgi 10 Installing collected packages: uwsgi 11 Successfully installed uwsgi-2.0.18要完全安装uWSGI, pip需要经过几个不同的免费信息发布网步骤:
在第3行,它下载一个名为uwsgi-2.0.18.tar.gz的TAR文件(tarball),该文件是用gzip压缩的。 在第6行,它接受tarball并通过调用setup.py构建一个.whl文件。 在第7行,它将轮子标记为uWSGI-2.0.18-cp38-cp38-macosx_10_15_x86_64.whl。 在第10行,它在构建了轮子之后安装实际的包。pip检索的tar.gz tarball是一个源分发包,或sdist,而不是一个轮子。在某些方面,sdist是轮子的反义词。
源代码发行版包含源代码。这不仅包括Python代码,还包括与包绑定的任何扩展模块的源代码(通常用C或c++编写)。对于源发行版,扩展模块是在用户端而不是开发人员端编译的。企商汇
源分发版还包含一个元数据包,位于名为.egg-info的目录中。该元数据有助于构建和安装包,但用户实际上并不需要使用它做任何事情。
从开发人员的角度来看,当您运行以下命令时,会创建一个源分发包:
$ python setup.py sdist现在尝试安装一个不同的包:chardet:
$ python -m pip install chardet==3.* 2 Collecting chardet 3 Downloading chardet-3.0.4-py2.py3-none-any.whl (133 kB) 4 |████████████████████████████████| 133 kB 1.5 MB/s 5 Installing collected packages: chardet 6 Successfully installed chardet-3.0.4您可以看到一个与uWSGI安装明显不同的输出。
安装chardet时直接从PyPI下载一个.whl文件。车轮名称为chardet-3.0.4-py2.py3-none-any。whl遵循特定的命名约定,稍后您将看到。从用户的角度来看,更重要的是,当pip在PyPI上找到一个兼容的滚轮时,并不存在构建阶段。
从开发人员的角度来看,轮子是运行以下命令的结果:
$ python setup.py bdist_wheel为什么uWSGI给你一个源分布,而chardet提供一个轮子?您可以通过查看PyPI上每个项目的页面并导航到下载文件区域来了解原因。本节将向您展示pip在PyPI索引服务器上实际看到的内容:
由于项目的网站模板复杂性,uWSGI只提供了一个源分发版(uWSGI -2.0.18.tar.gz)。 chardet同时提供了一个轮盘和一个源代码发行版,但是如果与您的系统兼容,pip会更喜欢轮盘。稍后您将看到如何确定兼容性。另一个用于轮子安装的兼容性检查示例是psycopg2,它为Windows提供了大量的车轮,但没有为Linux或macOS客户端提供任何轮子。这意味着,根据您的具体设置,pip安装psycopg2可以获取一个滚轮或源分发版。
为了避免这些类型的兼容性问题,一些包提供了多个轮子,每个轮子都针对特定的Python实现和底层操作系统。
到目前为止,您已经看到了轮子和sdist之间的一些明显区别,但更重要的是这些区别对安装过程的影响。

轮子加速安装
在上面,您看到了获取预构建轮子的安装和下载sdist的安装的比较。轮子使得Python包的端到端安装速度更快,原因有两个:
在其他条件相同的情况下,轮子通常比源分发包更小,这意味着它们可以在网络中更快地移动。 直接从wheels安装避免了从源分发版构建包的中间步骤。几乎可以保证,安装chardet只需uWSGI所需时间的一小部分。然而,这是一种不公平的比较,因为chardet是一个明显更小和更简单的包。使用不同的命令,您可以创建一个更直接的比较,它将演示轮子造成的差异有多大。
你可以通过-no-binary选项让pip忽略它对车轮的倾斜:
$ time python -m pip install \ --no-cache-dir \ --force-reinstall \ --no-binary=:all: \ cryptography这个命令计算加密包的安装时间,告诉pip使用源分发包,即使有合适的轮可用。包括:all:使规则适用于密码学及其所有依赖关系。
在我的机器上,从开始到结束大约需要32秒。不仅安装要花费很长时间,而且构建加密还需要提供OpenSSL开发头,并可用于Python。
现在可以重新安装密码学,但是这次要确保pip使用来自PyPI的wheels。因为pip更喜欢轮子,所以这类似于完全不带参数调用pip install。但在这种情况下,你可以让意图显式通过要求车轮-纯二进制:
此选项仅花费4秒多一点的时间,即仅为密码学及其依赖项使用源分发版时所用时间的八分之一。
你曾经考虑过 在 Ubuntu 中管理开机启动应用 吗?假如在开机时,你的 Ubuntu 系统启动得非常缓慢,那么你就需要考虑这个问题了。每当你开机进入一个操作系统,一系列的应用将会自动启动。这些应用被称为‘开机启动应用’ 或‘开机启动程序’。随着时间的推移,当你在系统中安装了足够多的应用时,你将发现有太多的‘开机启动应用’在开机时自动地启动了,它们吃掉了很多的系统资源,并将你的系统拖慢。这可能会让你感觉卡顿,我想这种情况并不是你想要的。让 Ubuntu 变得更快的方法之一是对这些开机启动应用进行控制。 Ubuntu 为你提供了一个 GUI 工具来让你找到这些开机启动应用,然后完全禁止或延迟它们的启动,这样就可以不让每个应用在开机时同时运行。在该文中,我们将看到 在 Ubuntu 中,如何控制开机启动应用,如何让一个应用在开机时启动以及如何发现隐藏的开机启动应用。这里提供的指导对所有的 Ubuntu 版本均适用,例如 Ubuntu 12.04, Ubuntu 14.04 和 Ubuntu 15.04。在 Ubuntu 中管理开机启动应用点击它来启动。下面是我的Startup Applications的样子:在 Ubuntu 中移除开机启动应用要将一个程序从开机启动程序列表中移除,选择对应的选项然后从窗口右边的面板中点击移除按钮来保留你的偏好设置。需要提醒的是,这并不会将该程序卸载掉,只是让该程序不再在每次开机时自动启动。你可以对所有你不喜欢的程序做类似的处理。让开机启动程序延迟启动这将展示出运行这个特定的程序所需的命令。保存并关闭设置。你将在下一次启动时看到效果。增添一个程序到开机启动应用列表中这将展示出在各种类别下你安装的所有程序。在 Ubuntu 的低版本中,你将看到一个相似的菜单,通过它来选择并运行应用。在各种类别下找到你找寻的应用,然后点击 属性 按钮来查看运行该应用所需的命令。例如,我想在开机时运行 Transmission Torrent 客户端。这就会向我给出运行 Transmission 应用的命令:接着,我将用相同的信息来将 Transmission 应用添加到开机启动列表中。第 2 步: 添加一个程序到开机启动列表中就这样,你将在下一次开机时看到这个程序会自动运行。这就是在 Ubuntu 中你能做的关于开机启动应用的所有事情。到现在为止,我们已经讨论在开机时可见到的应用,但仍有更多的服务,守护进程和程序并不在开机启动应用工具中可见。下一节中,我们将看到如何在 Ubuntu 中查看这些隐藏的开机启动程序。在 Ubuntu 中查看隐藏的开机启动程序复制代码代码如下:你可以像先前我们讨论的那样管理这些开机启动应用。我希望这篇教程可以帮助你在 Ubuntu 中控制开机启动程序。任何的问题或建议总是欢迎的。修改开机启动等待时间查看并修改配置文件 复制代码代码如下:复制代码代码如下:复制代码代码如下:我们可以将等待时间修改为自己想要的了。如:复制代码代码如下: