使用setuptools构建python包

news/2024/11/29 3:42:24/

python包分发方式

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

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

二进制包分发

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

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

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

eggs 与wheels的区别:

  • Egg格式有SetuptoolsSetuptoolsSetuptools 在2004年引入的,而Wheel 格式由 PEP427 在 2012 年定义,Wheel的出现是为了替代EggEggEgg
  • 其本质山是一个zip包。其现在被认为是一个pythonpythonpython的二进制包的标准格式。

以下是WheelWheelWheelEggEggEgg的主要区别:

  • 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模块,然后再使用pippippip命令。
$ pip install wheel
$ pip wheel --wheel-dir=/local/wheels pkg

setuptools构建包的格式

构建源码发布包:
用于发布一个python模块或项目,将源码打包成tar.gztar.gztar.gz或者zipzipzip压缩包。

$ python setup.py sdist

使用sdistsdistsdist将根据当前平台创建默认格式存档,再类unix平台上,将创建后缀为tar.gztar.gztar.gzgzipgzipgzip压缩的tartartar文件分发包。而在windows文件上为zip文件。
也可以通过指定要分布包的格式:具体如下:

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

创建一个压缩tarballtarballtarball和一个zipzipzip文件,可用格式为:
在这里插入图片描述
对以上格式,有几点需要注意以下:

  • 在版本3.5中才添加,对xztarxztarxztar格式的支持》
  • zipzipzip格式需要你事先已安装相应的模块,zipzipzip程序或zipfilezipfilezipfile模块
    另外,可以指定归档文件的所有文件归rootrootroot拥有。
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_packagessetup(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_packagessetup(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.ppmy.cn/news/1963.html

相关文章

LINUX下看门狗的使用

0、基本原理 使能看门狗,并配置看门狗,周期性的给看门狗设备写入数据即为喂狗。 1、使能硬看门狗 内核和设备树使能看门狗,具体的需要参考对应的cpu文档对看门狗的描述。 2、应用程序喂狗 参考应用程序源码如下: #include &…

【入门】初识深度学习

文档背景 机器学习和深度学习的概念十分火热。听上去也很难,不慌,有时候就需要行动在前脑子在后。不管,干就完啦。 前言 人工智能(ArtificialIntelligence,AI)是最宽泛的概念,是研发用于模拟、延…

【Pytorch】第 1 章 :强化学习和 PyTorch 入门

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

Unity简单基础

Unity文件夹的作用 Resources存放资源的特殊文件夹,Resources中全部资源会被打包Pluging存放第三方包、工具代码、sdk文件Editor为Unity编辑器扩展程序的目录,可以在根目录下,也可以在子目录下StreamingAssets该文件夹也会在打包的时候全部打…

FL STUDIO水果21版本新主题、插件、功能介绍

大家常说的“DJ音乐”实际应该指的是EDM音乐,现在市面上的宿主软件几乎都可以制作EDM音乐。DJ音乐制作要学多久?可长可短,想要学精一门艺术和技术至少需要一两年时间。FL Studio软件全称是Fruity Loops Studio,由于这款软件自身lo…

微信小程序反编译

本文转载于:https://www.cnblogs.com/one-seven/p/15524457.html 微信小程序反编译 微信文件保存位置\WeChat Files\Applet\小程序id_APP_.wxapkg 现在小程序是处于编码状态 github上下载一个python版的解密工具 https://github.com/superdashu/pc_wxapkg_decr…

六种正确清理C盘的方法,解决你的红色烦恼

Windows操作系统一般是安装在磁盘驱动器的C盘中,运行时会产生许多垃圾文件,C盘空间在一定程度上会越来越小。 伴随着电脑工作的时间越久,C盘常常会提示显示其内存已不足。 C盘容量不足将会极大影响系统的运行速度,电脑会变卡、死机…

04、网络配置

目录 1、 Docker网络模式 2、外部访问docker容器 2.1.bridge模式 2.2.host模式 2.3.相关命令 2.4.网桥查看工具bridge-utils 3、创建自定义网络:(设置固定IP) 3.1.创建自定义网络 3.2.创建Docker容器 以上就是今天的分享&#xff…