(实用)Python模块打包

2023-10-30

目录

前言

一.什么是setuptools?

二.编写setup.py文件

1.创建一个setup.py文件.

2.调用setuptools的setup 方法,参数如下

3.代码示例

三.执行打包

3.1.执行打包语句

3.1.1 打包成 wheel

3.1.2 打包成 xxx-version.tar.gz

3.2.验证

四.安装

4.1安装whl

4.2 安装gz


前言

平时造好的轮子,最后还是有给大家使用的一天。完整的记录一下,如何把Python模块打包成whl(wheel) 文件或者gz压缩文件。打包时会用到setuptools(60.5.0)工具。

一.什么是setuptools?

setuptoolssetuptools是 Python Enterprise Application Kit(PEAK)的一个副项目,是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的。Python还可以帮助我们管理第三方依赖包。
 

二.编写setup.py文件

1.创建一个setup.py文件.

在项目根目录下,创建一个setup.py文件,方便将需要打包的模块找到.

setup.py文件无论打包还是安装都会用到,在setup.py文件忠描述清楚这个模块的信息以及依赖项。

2.调用setuptools的setup 方法,参数如下

  • name : 打包起来的包的文件名
  • version : 版本号,添加为打包文件的后缀名
  • author : 作者
  • author_email : 作者的邮箱
  • py_modules : 打包的.py文件
  • packages: 打包的python文件夹
  • include_package_data :  项目里会有一些非py文件,比如html和js等,这时候就要靠include_package_data 和 package_data 来指定了。package_data:一般写成{‘your_package_name’: [“files”]}, include_package_data还没完,还需要修改MANIFEST.in文件.MANIFEST.in文件的语法为: include xxx/xxx/xxx/.ini/(所有以.ini结尾的文件,也可以直接指定文件名)
  • license : 支持的开源协议
  • description : 对项目简短的一个形容
  • ext_modules : 是一个包含Extension实例的列表,Extension的定义也有一些参数。
  • ext_package : 定义extension的相对路径
  • requires : 定义依赖哪些模块
  • provides : 定义可以为哪些模块提供依赖
  • data_files :指定其他的一些文件(如配置文件),规定了哪些文件被安装到哪些目录中。如果目录名是相对路径,则是相对于sys.prefix或sys.exec_prefix的路径。如果没有提供模板,会被添加到MANIFEST文件中。
     

3.代码示例

from setuptools import setup,find_packages

set_up(
   name = 'foo',#包名
   version = '0.0.1',#版本号
   packages = find_packages()#搜索Demo下的包
)

三.执行打包

3.1.执行打包语句

在set_up.py 文件夹下打开终端,执行set_up.py.

安装包有两种结果 whl文件或者tar.gz文件,可按照自身需求去选择。

3.1.1 打包成 wheel

python setup.py bdist_wheel

 执行成功后, 在项目文件夹下,生成dist文件夹

dist文件夹中的whl文件就是打包好的轮子 

3.1.2 打包成 xxx-version.tar.gz

python setup.py sdist

3.2.验证

查看打包的模块 wheel 直接将whl改成zip,可以看到被打包的内容

四.安装

4.1安装whl

pip install XXXXX.whl

4.2 安装gz

解压缩gz文档后,打开文件夹,执行setup.py,模块将会被安装到解释器对应的Lib/site-packages目录下。

python setup.py install

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(实用)Python模块打包 的相关文章

随机推荐

  • python,满分,砝码称重【第十二届】【省赛】【研究生组】

    完整源代码在文章末尾 首先这种涉及到二维数组的优化问题 优先考虑动态规划 核心思路 先构建一个二维python列表 详情参考 341条消息 python 二维列表 数组 赋值问题 z小白的博客 CSDN博客 python创建二维数组赋值 通
  • 禁止root远程登录解决办法

    linux中root用户是超级管理员 可以针对root用户暴力破解密码 这样很不安全 工作中我们一般禁止root用户直接远程登陆 开设一个或多个普通用户 只允许登陆普通用户 如果有需要用root用户 可以su切换root 或者sudo来拥有
  • activeMQ实例在项目中的运用二【项目实战系列】

    上一篇我们已经介绍了activeMQ的服务器端的开发和代码 那么这一篇就介绍一下怎么获取对应的activeMQ里面的信息 并 通过websocket推送到前端 首先来看一下接收端项目结构 项目结构中主要的就是listener包里面的内容 用
  • hive 指定字段插入数据_Hive插入数据的几种常用方法

    Hive的几种常见的数据导入方式 这里介绍四种 1 从本地文件系统中导入数据到Hive表 2 从HDFS上导入数据到Hive表 3 从别的表中查询出相应的数据并导入到Hive表中 4 在创建表的时候通过从别的表中查询出相应的记录并插入到所创
  • RocketMQ中文文档(译)

    前言 近日需要研究一下RocketMQ 为了方便日后查找 因此对官方英文文档进行翻译记载 也希望能帮助到要学习的朋友 阅读后发现 文档还是比较粗略的 大概也只能了解些概念和简单实用 快速入门部分比较简单 因此暂时没翻译只翻译其中重要的几个部
  • 金融分析与风险管理——风险价值(VaR)

    金融分析与风险管理 风险价值 VaR 1 风险价值 VaR 简述 1 1 Python可视化风险价值 2 VaR值的测度方法 2 1 方差 协方差法 2 2 历史模拟法 2 3 蒙特卡洛模拟法 3 回溯检验 4 压力VaR 1 风险价值 V
  • [ROS]动态参数设置-可视化调试-创建cfg文件

    用途 调试时 尤其在导航和建图应用中 需要经常修改程序中的参数值 这时无论时修改命令行 还是编写固定修改参数的可执行文件 都无法满足要求 ROS为我们提供了动态参数设置机制 一 创建cfg文件 创建动态参数ROS包 名字 book dyna
  • C语言基本知识

    基础 第一个函数 argc代表参数个数argument count argv代表参数value 第一个为放的是文件名 后面是传入的参数 编译过程 预处 gcc E hello c o hello i 编译 gcc S hello c i o
  • (Termux)安装Nginx(其他的也适用)

    这里没有直接的nginx包了 需要下载进行编辑安装了 一 下载 创建文件夹 mkdir usr local nginx cd usr local nginx 下载 wget https nginx org download nginx 1
  • socket短连接,数据交互报文采用XML形式

    socket 服务端一直等待客户端 public void threadServer TODO Auto generated method stub class ServerThread extends Thread Socket sock
  • 中国区块链网络调研分析

    2016年 国务院发布 十三五 国家信息规划 第一次将区块链纳入新技术范畴并作前沿布局 这标志着我国开始推动区块链技术和应用发展 此后 中央和地方纷纷出台了相关监管或扶持政策 为区块链技术和产业发展提供政策红利 鼓励和监管新技术的创新发展
  • ConcurrentHashMap 详解(超详细 看不懂你锤我)

    ConcurrentHashMap介绍 ConcurrentHashMap是一个 在juc包下的 map 线程安全 在jdk 1 7 之前采用数组 链表的结构 并且采用分段锁机制 来保证线程安全 而jdk1 8之后 他改成了 数组 链表 红
  • Linux和android的不同

    一 主体不同 1 linux系统 是一套免费使用和自由传播的类UNIX操作系统 2 安卓 是一种基于Linux的自由及开放源代码的操作系统 二 架构不同 1 linux系统 主要受到Minix和Unix思想的启发 是一个基于POSIX和Un
  • Extjs floating Panel 挡住 提示框或确认框的解决方法

    在弹窗代码的后面紧跟一句 Ext MessageBox getDialog getEl setStyle z index 80000 即可 如 Ext Msg alert 提示 根节点不能删除 Ext MessageBox getDialo
  • 二进制十进制小数转换

    方法 十进制的小数转为二进制 主要是小数部分乘以2 取整数部分一次从左往右放在小数点后 直至小数点后为0 就是为整数时 eg 0 125 二进制的小数转换为十进制主要是乘以2的负次方 从小数点后开始 依次乘以2的负一次方 2的负二次方 2的
  • 第10讲:Redis幂等性

    问 什么是幂等性 幂等性 就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的 不会因为多次点击而产生了了副作用 举个最简单的例子 那就是支付 用户购买商品后支付 支付扣款成功 但是返回结果的时候网络异常 此时钱已经扣了 用户再次点
  • 搭建myexam考试系统服务器,myExam

    myExam classpath myExam cvsignore myExam project myExam tomcatplugin myExam build xml myExam jsp exam jsp myExam jsp exa
  • JAVA-输出一个三角形(详解)

    public class Demo 注意 编程时不可以使用汉语和拼音 要用英文单词或者英文单词缩写 如图 想要输出一个四行的三角形 第1行 第2行 第3行 第4行 思路 1 将这个图形看成四个直角三角形 2 需要两层for循环 第一层的作用
  • Unity编辑器扩展——通用树形结构绘制工具

    我们在使用Unity进行工具开发时 有时需要绘制一些树形的目录结构 例如这样的 提供一个通用的树形目录绘制的通用类 效果如下 设计图为 TreeNodeGUIBase为树的叶子结点结构 所以必须包含它的子节点的列表 TreeGUIBase为
  • (实用)Python模块打包

    目录 前言 一 什么是setuptools 二 编写setup py文件 1 创建一个setup py文件 2 调用setuptools的setup 方法 参数如下 3 代码示例 三 执行打包 3 1 执行打包语句 3 1 1 打包成 wh