什么是Python Wheels? python.whl有什么用处?

什么是Python Wheels? python.whl有什么用处?
.whl文件, 是那很少被提及的一部分, 然而, 它们对于包的安装过程而言, 相当重要。要是你已然借助pip安装了包, 那么, 极有可能, 轮子让你的安装速度变得更快了, 且效率更高了。轮子属于生态系统的一个构成部分, 它对包的安装工作得以正常开展有帮助。它让安装速度更快, 让包的分发流程更稳定。在这个教程里, 你会深入知晓轮子究竟是什么, 它能带来哪些益处, 以及它是怎样获取吸引力并让使用变得更为便利的。推荐教程教程轮子简介学习如何把项目打入轮子之前, 从用户视角去知晓使用轮子是怎样的情形, 这是挺有帮助的。欲开启此实验, 可于环境里如往常那般安装一个包。在此情景下, 需安装uWSGI 2.0.x版本。$ python -m pip install uwsgi2.0.* 2 Collecting uwsgi2.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文件, 这文件是用gzip压缩制成的。它于第6行, 接受并借助调用setup.py构建出一个.whl文件。它在第7行, 把轮子标记成uWSGI - 2.0.18 - cp38 - cp38 -.whl。它在第10行, 于构建好轮子之后安装实际的包。pip所检索的tar.gz, 它是一个源分发包, 也就是sdist, 可不是一个轮子。在某些层面来讲, sdist其实是轮子的相反的那种类型。源代码发行版当中含有源代码, 这不但涵盖代码, 而且还包含跟包关联的任一扩展模块的源代码, 该源代码通常是以C或者c来编写的, 对于源发行版而言, 扩展模块是于用户端而非开发人员端进行编译的。源分发版含一个元数据包, 此元数据包处于名为.egg-info的目录里, 该元数据对构建与安装包有帮助, 然而用户实际上没必要用它来做任何事。于开发人员视角而言, 当您去运行下述这般的命令之时, 会构建起一个源分发包。$ python setup.py sdist现在尝试安装一个不同的包:$ python -m pip install chardet3.* 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安装明显不同的输出。于安装之际, 径直从PyPI那儿去下载一个.whl文件。此车轮的名称乃是-3.0.4-py2.py3-none-any。该whl是依从特定的命名约定的, 过后您自会瞧见。从用户一方瞧瞧, 更为关键的是, 当pip于PyPI之上查找到一个相兼的滚轮之际, 构建阶段是不存在的。从开发人员的角度来看轮子是运行以下命令的结果:$ python setup.py bdist_wheel何以uWSGI给予你一个源分布, 却为之提供一个轮子呢? 你能够经由查看PyPI上各个项目的页面, 并辗转导航至下载文件区域去探明其中缘由。此节将会向你呈现pip于PyPI索引服务器之上实际所目睹的情形:。项目因有复杂性, uWSGI仅给出一个源分发版, 即uWSGI -2.0.18.tar.gz。它同时给出一个轮盘以及一个源代码发行版, 不过要是与您的系统相兼容, pip会更倾向于轮盘。稍后您能看到怎样去确定兼容性。另一个示例是用于轮子安装的兼容性检查 , 它提供了大量的车轮 , 然而却没有为Linux客户端提供任何轮子 , 也没有为macOS客户端提供任何轮子。这意味着 , 依据您的具体设置 , pip安装能够获取一个滚轮或者源分发版。以便防止这些种类的兼容性难题, 某些包给出了好些轮子, 每一个轮子都对准特定的达成以及底层操作系统。迄今为止, 您已然瞧见了轮子与sdist之间的某些显著差别, 然而更为关键的是, 这些差别对于安装进程所产生的影响。推荐微课基础微课轮子加速安装于其之上, 您目睹了获取预构建轮子的装设以及下载sdist的--的对比。那轮子可令包的端到端安装速率更为迅速, 缘由存在两点, 其一, 其二。和其他条件相同的情形相对比, 轮子一般会比源分发包小些, 这表明它们能够在网络里更迅速地移动。直接进行安装避开了从源分发版构建包的中间环节步骤。可以近乎保证, 安装所需时间仅是uWSGI所需时间的一小部分。然而, 这属于一种不公平比较, 因为其是一个显著更小且更简单的包。运用不同命令, 您能够创建更直接比较, 此比较会演示轮子造成的差距有多么大。你可以通过-no-选项让pip忽略它对车轮的倾斜:$ time python -m pip install \ --no-cache-dir \ --force-reinstall \ --no-binary:all: \ cryptography这个指令用于算出加密包的安装用时, 告知pip采用源分发包, 哪怕存在合适的轮可供利用。其中涵盖: all: 促使该规则对密码学及其各类依赖关系均适用。于我的那台机器上, 自起始直至终了大概需时32秒。不光安装耗费许久时间, 并且构建加密得要供应开发头且能予以使用。当下能够重新开展密码学的安装操作, 然而此次务必要保证pip运用来源于PyPI的。鉴于pip更倾向于轮子, 所以这近似于全然不携带参数去调用pip。不过在这种状况之下, 你能够使意图经由要求车轮-纯二进制而显明:。这个选项所耗费的时间, 仅仅是四秒多那么一丁点儿, 而这, 只是在针对密码学以及依赖它的各项内容, 去使用源分发版的时候, 所花费时间的整整八分之一。以上就是关于 的相关介绍了希望对大家有所帮助。

最新新闻

日新闻

周新闻

月新闻