使用setuptools构建python包

news2024/12/23 18:35:48

python包分发方式

源码包分发:
源码包安装过程是先解压,再编译。最后才安装,所以其是跨平台的,由于每次安装都需要进行编译,相对于二进制包安装方式来说安装速度较慢
解压——编译——安装

源码包本质上是一个压缩包,其常见的各式有:
在这里插入图片描述

二进制包分发

二进制包的安装过程省去了编译过程,直接进行解压安装,所以安装速度较源码包来说更快。

由于不同平台编译出来的包无法通用,所以在发布时,需是事先编译好多个平台的包

二进制包的常见格式有:
在这里插入图片描述

eggs 与wheels的区别:

  • Egg格式有 S e t u p t o o l s Setuptools Setuptools 在2004年引入的,而Wheel 格式由 PEP427 在 2012 年定义,Wheel的出现是为了替代 E g g Egg Egg
  • 其本质山是一个zip包。其现在被认为是一个 p y t h o n python python的二进制包的标准格式。

以下是 W h e e l Wheel Wheel E g g Egg Egg的主要区别:

  • Wheel 有一个官方的 PEP427 来定义,而 Egg 没有 PEP 定义
  • Wheel 是一种分发格式,即打包格式。而 Egg 既是一种分发格式,也是一种运行时安装的格式,并且是可以被**直接 import
  • Wheel 文件不会包含 .pyc 文**件
  • Wheel 使用和 PEP376 兼容的 .dist-info 目录,而 Egg 使用 .egg-info 目录
  • Wheel 有着更丰富的命名规则
  • Wheel 是有版本的**。每个 Wheel 文件都包含 wheel 规范的版本和打包的实现**
  • Wheel 在内部被 sysconfig path type 管理,因此转向其他格式也更容易
    Wheel包可以通过pip来安装,只不过需要先安装wheel模块,然后再使用 p i p pip pip命令。
$ pip install wheel
$ pip wheel --wheel-dir=/local/wheels pkg

setuptools构建包的格式

构建源码发布包:
用于发布一个python模块或项目,将源码打包成 t a r . g z tar.gz tar.gz或者 z i p zip zip压缩包。

$ python setup.py sdist

使用 s d i s t sdist sdist将根据当前平台创建默认格式存档,再类unix平台上,将创建后缀为 t a r . g z tar.gz tar.gz g z i p gzip gzip压缩的 t a r tar tar文件分发包。而在windows文件上为zip文件。
也可以通过指定要分布包的格式:具体如下:

$ python setup.py sdist --formats=gztar,zip

创建一个压缩 t a r b a l l tarball tarball和一个 z i p zip zip文件,可用格式为:
在这里插入图片描述
对以上格式,有几点需要注意以下:

  • 在版本3.5中才添加,对 x z t a r xztar xztar格式的支持》
  • z i p zip zip格式需要你事先已安装相应的模块, z i p zip zip程序或 z i p f i l e zipfile zipfile模块
    另外,可以指定归档文件的所有文件归 r o o t root root拥有。
python setup.py sdist --owner=root --group=root

构建二进制分发包

Python模块可以打包成exe这样的二进制软件包,在windows中可以双击exe进行安装。

$ python setup.py bdist_wininst

python模块也是支持$ rpm$ 包的构建,在 Linux 中可以使用$ rpm $来安装包。

$ python setup.py bdist_rpm

python包模块支持打包成egg包。

$ python setup.py bdist_egg

如果需要安装到多个平台,即有window也有Linux,按照上面的方法,多种格式,我们要执行多次命令,为了方便可以执行如下这条命令,即可生成多个格式的进制

$ python setup.py bdist

setup.py文件编写

setup.py简单使用示例。

from setuptools import setup, find_packages


setup(
    name="mytest",
    version="1.0",
    author="xxx",
    author_email="xxx@163.com",
    description="Learn to Pack Python Module",

    # 项目主页
    url="http://xxx.com/", 

    # 你要安装的包,通过 setuptools.find_packages 找到当前目录下有哪些包
    packages=find_packages()
)

关于文件的分发

from setuptools import setup, find_packages


setup(
    name="mytest",
    version="1.0",
    author="xxx",
    author_email="xxx@163.com",
    description="Learn to Pack Python Module",
    url="http://xxx.com/", 
    packages=find_packages(),

    # 安装过程中,需要安装的静态文件,如配置文件、service文件、图片等
    data_files=[
        ('', ['conf/*.conf']),
        ('/usr/lib/systemd/system/', ['bin/*.service']),
               ],

    # 希望被打包的文件
    package_data={
        '':['*.txt'],
        'bandwidth_reporter':['*.txt']
               },
    # 不打包某些文件
    exclude_package_data={
        'bandwidth_reporter':['*.txt']
               }
)

参数解释

重点是将python文件打包成源码包。全部都将其搞定都行啦的样子与打算。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

慢慢的将各种包啥的都将其搞清楚,全部都将其搞定都行啦的样子与打算。

会自己将python文件打包成源码包。会自己整理使用,先用到代码后再说的样子都行啦的回事与样子。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64140.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CDGA|2023年数据治理发展前景预测步骤

CDGA|2023年数据治理发展前景预测步骤 数据治理发展前景预测,就是在数据治理市场调查获得的各种信息和资料的基础上,运用科学的预测技术和方法,对影响数据治理市场供求变化的诸因素进行调查研究,分析和预见数据治理发展趋势&…

《解构领域驱动设计》读书笔记

文章目录书籍信息开篇软件复杂度剖析复杂系统理解能力预测能力领域驱动设计概览基本概念控制软件复杂度领域驱动设计统一过程现存的不足领域驱动设计统一过程全局分析问题空间探索全局分析的 5W 模型高效沟通高效协作商业模式画布业务流程图服务蓝图用例图事件风暴学习循环价值…

windows系统下mysql的主从复制

使用一台物理机实现mysql的主从复制功能。 准备: 1、操作系统:Windows Server 2016 Standard 2、下载mysql免安装包: https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.17-winx64.zip 安装maser 1、解压mysql压缩包&…

Windows下安装hadoop2.7.4

Windows下安装hadoop 案例环境 该压缩包是已经简化配置后的 hadoop2.7.4下载地址文件分享 (weiyun.com) 安装步骤 解压压缩包 配置环境变量 在系统变量中添加 在path中添加 拷贝hadoop2.7.4\bin\hadoop.dll到目录C:\Windows\System32 配置文件 把/etc/hadoop/ 下目录的相…

玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一)

前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。 而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞&a…

管理RMAN备份_维护RMAN备份和仓库记录

1.RMAN备份和仓库维护概述 1.1.备份和仓库维护的目的 建议的维护策略是配置一个快速恢复区域,一个备份保留策略和一个归档 redo日志删除策略。在这种情况中,数据库按需要自动维护和删除备份与归档redo日志。然而,有时…

[附源码]Python计算机毕业设计Django水果管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

阿里P8专家爆出:入职阿里必备的598道java面试题,内含算法

前言 之前也给大家分享过很多的面试题和大佬的面试经验,相信大家也已经利用到了,也顺利找到了工作,并拿到了高薪。 今天就给大家分享阿里P8专家长期以来面试所问到的java面试题,总共有598道(含算法)&…

PCL 使用MLS 上采样

移动最小二乘法MLS(Moving Lest Squares)简要介绍_Figure 09的博客-CSDN博客_移动最小二乘法 深入理解移动最小二乘法曲面拟合代码(MLS2D.m)_残影丶的博客-CSDN博客_mls2d PCL 点云采样_Σίσυφος1900的博客-CSDN博客 上采样…

和数集团浅谈区块链技术如何赋能数字政务?

在“十四五”提高数字政府建设水平的大环境下,构建数字政务发展体系是国家治理现代化的必然选择。2021年是2035远景目标的开局之年,《十四五规划纲要》中明确将区块链列为“十四五”七大数字经济重点产业之一。数字政务的体系架构和创新机理,离不开新兴技术融合互通…

移动通信:分集技术(时间分集,频率分集,空间分集,SC,MRC,EGC)学习笔记

文章目录Micro diversityTime DiversityFrequency DiversitySpatial DiversityCombination of signalsSelection CombiningMaximal Ratio CombiningEqual Gain CombiningReferences分集技术是用来补偿衰落信道损耗的,它通常通过两个或更多的接收天线来实现。同均衡器…

越早越好,突破职业瓶颈,2023年考PMP项目管理有何好处?

考PMP没有行业和职业的限制,只要是需要感兴趣的人就可以报考。 适合任何领域行业的项目。 是通用的项目管理理念。 那么 # 考了PMP会有什么益处呢?# ---带你30秒看完,从六个方面讲 01 职场加分项 目前国内很多的大型企业在招聘的时候会有…

矿泉水溴酸盐超标如何解决?除溴酸盐设备有哪些?

水生产企业多使用臭氧消毒,不过,水生产企业不存在水运输路途遥远的问题,因此可以使用臭氧消毒。同时,也是因为臭氧在消毒后会直接变成氧气,所以不会有使用氯消毒后的那种味道,不会影响矿泉水的口感&#xf…

SpringBoot的创建的使用

哈喽呀,你好呀,欢迎呀,快来看一下这篇宝藏博客吧~~~ 目录 1、Spring Boot快速扫盲 2、Spring Boot 项目创建 3、运行项目 4 、输出hello world 5、注意事项--包路径错误 6、小结 1、Spring Boot快速扫盲 在创建SpringBoot项目前,我们得…

大数据1.5 使用Vim编辑器

一、安装Vim编辑器 执行命令:yum -y install vim 二、三种工作模式 1、命令模式 执行命令:vim test.txt,进入默认的命令模式 2、输入模式 在输入模式下,Vim 可以对文件执行写操作,类似于在 Windows 系统的文档中…

常见的排序算法

常见排序算法前言排序分类一、插入排序直接插入排序希尔排序二、选择排序直接选择排序堆排序三、交换排序冒泡排序快速排序1、hoare版本2、挖坑法3、前后指针版本快排时间复杂度分析快排的优化4、快排非递归实现(利用栈实现)5、快排非递归实现&#xff0…

节省时间的分层测试,到底怎么做?

为什么要做分层测试 从软件工程的角度,结合软件开发的V模型、MVC架构、测试金字塔,综合起来便于理解。 1、借鉴与软件开发的V模型 从V模型的底部往右上方向,先做单元测试,再做集成测试一直到最后的验收测试。 2、来源于MVC架构…

SSM房屋租赁系统

SSM房屋租赁系统该项目采用的技术实现一、系统功能技术栈二、关键代码1.首页运行截图总结该项目采用的技术实现 后台框架:Spring、SpringMVC、MyBatis UI界面:jQuery 、JSP 数据库:MySQL 提示:以下是本篇文章正文内容&#xff…

C++ 三大特性之-多态

简介 面向对象有三大特性:封装、继承、多态 多态:一个接口,多种实现 C有两种多态形式: 静态多态动态多态 静态多态 静态多态:编译期间的多态,即在编译阶段就能确定好最终要调用哪个方法。静态多态的函数调…

python简单实现网络爬虫

前言 在这一篇博客中,我会用python来实现一个简单的网络爬虫。简单的爬取一下一些音乐网站、小说网站的标题、关键字还有摘要!所以这个爬虫并不是万能爬,只针对符合特定规则的网站使用。(只使用于爬标题、关键字和摘要的&#xff…