前言
成都创新互联专注于马山网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供马山营销型网站建设,马山网站制作、马山网页设计、马山网站官网定制、微信小程序定制开发服务,打造马山网络公司原创品牌,更为您提供马山网站排名全网营销落地服务。
Python .whl文件(或wheels)是Python中很少讨论的一部分,但是它们对Python包的安装过程非常重要。如果您已经使用pip安装了Python包,那么很有可能是轮子(wheels)使安装速度更快、效率更高了。
轮子是Python生态系统的一个组件,它有助于使包的安装工作正常进行。它们允许更快的安装和更稳定的包分发过程。在本教程中,您将深入了解轮子是什么,它们提供了什么好处,以及它们是如何获得吸引力并使使用Python变得更方便的。
[[337088]]
轮子简介
在学习如何将项目打包到轮子中之前,从用户的角度了解使用轮子是什么样子是很有帮助的。
可以像往常一样在环境中安装一个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需要经过几个不同的步骤:
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索引服务器上实际看到的内容:
另一个用于轮子安装的兼容性检查示例是psycopg2,它为Windows提供了大量的车轮,但没有为Linux或macOS客户端提供任何轮子。这意味着,根据您的具体设置,pip安装psycopg2可以获取一个滚轮或源分发版。
为了避免这些类型的兼容性问题,一些包提供了多个轮子,每个轮子都针对特定的Python实现和底层操作系统。
到目前为止,您已经看到了轮子和sdist之间的一些明显区别,但更重要的是这些区别对安装过程的影响。
轮子加速安装
在上面,您看到了获取预构建轮子的安装和下载sdist的安装的比较。轮子使得Python包的端到端安装速度更快,原因有两个:
几乎可以保证,安装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秒多一点的时间,即仅为密码学及其依赖项使用源分发版时所用时间的八分之一。
网站题目:什么是PythonWheels?为什么要关心它?
网页路径:http://www.shufengxianlan.com/qtweb/news33/487533.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联