尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

什么是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。不过在这种状况之下, 你能够使意图经由要求车轮-纯二进制而显明:。这个选项所耗费的时间, 仅仅是四秒多那么一丁点儿, 而这, 只是在针对密码学以及依赖它的各项内容, 去使用源分发版的时候, 所花费时间的整整八分之一。以上就是关于 的相关介绍了希望对大家有所帮助。
返回列表