返回顶部
首页 > 资讯 > 后端开发 > Python >什么是Python Wheels
  • 803
分享到

什么是Python Wheels

2023-06-16 07:06:26 803人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要讲解了“什么是python Wheels”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是Python Wheels”吧!前言Python  .whl文件(或whee

这篇文章主要讲解了“什么是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 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之间的一些明显区别,但更重要的是这些区别对安装过程的影响。

什么是Python Wheels

轮子加速安装

在上面,您看到了获取预构建轮子的安装和下载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秒多一点的时间,即仅为密码学及其依赖项使用源分发版时所用时间的八分之一。

感谢各位的阅读,以上就是“什么是Python Wheels”的内容了,经过本文的学习后,相信大家对什么是Python Wheels这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 什么是Python Wheels

本文链接: https://lsjlt.com/news/282784.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 什么是Python Wheels
    这篇文章主要讲解了“什么是Python Wheels”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是Python Wheels”吧!前言Python  .whl文件(或whee...
    99+
    2023-06-16
  • Python Wheels有什么作用
    这篇文章主要讲解了“Python Wheels有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python Wheels有什么作用”吧!Python .whl文件(或wheels)是...
    99+
    2023-06-27
  • 解决opencv-python 安装报错 Could not build wheels for opencv-python
    解决opencv-python 安装报错 Could not build wheels for opencv-python 使用python3.6时会报错`ERROR: Could not b...
    99+
    2023-09-13
    python opencv 人工智能
  • Python:安装opencv-python出错问题ERROR: Could not build wheels for opencv-python
    项目场景: 笔者在安装opencv-python的过程中遇到了如下错误 问题描述 在安装opencv-python的过程,笔者直接通过pip命令进行安装,遇到了如下问题 命令 pip install ...
    99+
    2023-09-03
    python opencv 人工智能
  • 什么是python
    诞生 python的创始人为吉多·范罗苏姆(Guido van Rossum),一般叫他 龟叔 。1989年的圣诞节期间,龟叔为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。 优点 python语言崇尚优...
    99+
    2023-01-31
    python
  • 【Bug】ERROR: Could not build wheels for opencv-python, which is required to install pyproject.toml-ba
    报错信息: ERROR: Could not build wheels for opencv-python, which is required to install pyproject.toml-b...
    99+
    2023-09-11
    opencv python bug
  • 什么是python库
    这篇文章将为大家详细讲解有关什么是python库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python...
    99+
    2023-06-14
  • python socket是什么
    这篇文章主要讲解了“python socket是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python socket是什么”吧!socket起源于Unix,而Unix/Linux基本...
    99+
    2023-06-27
  • python安装opencv报错ERROR: Could not build wheels for opencv-python, which is required to install pyproj
    python3.6安装opencv遇到报错。如下所示: pip install opencv-python报错。 Please check the install target is valid ...
    99+
    2023-08-31
    python opencv 人工智能
  • python爬虫是什么
    python爬虫指的是一种自动获取网络数据的成勋,由python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能,他将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统...
    99+
    2024-04-02
  • python中什么是json
    python中什么是json?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几...
    99+
    2023-06-14
  • python指的是什么
    这篇文章将为大家详细讲解有关python指的是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、python介绍python是编程语言,与平时说的c语言、Java、php等语言相似。python是面向...
    99+
    2023-06-14
  • python中什么是 pip
    python中什么是 pip?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;...
    99+
    2023-06-14
  • 什么是Python与Node.JS
    本篇内容主要讲解“什么是Python与Node.JS”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是Python与Node.JS”吧!什么是Python和Node.js●PythonGitH...
    99+
    2023-06-16
  • Python概念是什么
    这篇文章主要介绍“Python概念是什么”,在日常操作中,相信很多人在Python概念是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python概念是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-16
  • php和python是什么
    本篇内容主要讲解“php和python是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php和python是什么”吧!php的中文意思为“超文本预处理器”,是一种免费开源、跨平台、在服务器端...
    99+
    2023-06-21
  • Python中什么是GIL
    本篇文章给大家分享的是有关Python中什么是GIL,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。问:说说Python中的GIL是什么?答:在Python中GIL是Global...
    99+
    2023-06-19
  • python中Jedi是什么
    这篇文章将为大家详细讲解有关python中Jedi是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JediJedi 库是一个自动完成和代码分析库。它使编写代码更快、更高效。除非你正在开发自己的东西 I...
    99+
    2023-06-27
  • python列表是什么
    这篇文章主要介绍“python列表是什么”,在日常操作中,相信很多人在python列表是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python列表是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-04
  • Python序列是什么
    本篇内容主要讲解“Python序列是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python序列是什么”吧!sequence 序列sequence(序列)是一组有顺序的元素的集合(严格的说...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作