这篇文章主要讲解了“什么是Python Wheels”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是Python Wheels”吧!
前言
Python .whl文件(或wheels)是Python中很少讨论的一部分,但是它们对Python包的安装过程非常重要。如果您已经使用pip安装了Python包,那么很有可能是轮子(wheels)使安装速度更快、效率更高了。
轮子是Python生态系统的一个组件,它有助于使包的安装工作正常进行。它们允许更快的安装和更稳定的包分发过程。在本教程中,您将深入了解轮子是什么,它们提供了什么好处,以及它们是如何获得吸引力并使使用Python变得更方便的。
轮子简介
在学习如何将项目打包到轮子中之前,从用户的角度了解使用轮子是什么样子是很有帮助的。
可以像往常一样在环境中安装一个Python包来开始这个实验。在这种情况下,安装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压缩文件是一个源分发包,或sdist,而不是一个轮子。在某些方面,sdist是轮子的反义词。
源代码发行版包含源代码。这不仅包括Python代码,还包括与包绑定的任何扩展模块的源代码(通常用C或c++编写)。对于源发行版,扩展模块是在用户端而不是开发人员端编译的。
源分发版还包含一个元数据包,位于名为.egg-info的目录中。该元数据有助于构建和安装包,但用户实际上并不需要使用它做任何事情。
从开发人员的角度来看,当您运行以下命令时,会创建一个源分发包:
<>之前,美元python setup.py sdist现在尝试安装一个不同的包:chardet:
<>之前,美元python -m pip install & # 39; chardet==3。* & # 39;,, 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 包:,chardet , 6, Successfully installed chardet-3.0.4您可以看到一个与uWSGI安装明显不同的输出。
安装chardet时直接从PyPI下载一个.whl文件。车轮名称为chardet-3.0.4-py2.py3-none-any.whl遵循特定的命名约定,稍后您将看到。从用户的角度来看,更重要的是,当皮普在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可以获取一个滚轮或源分发版。