目录

  • 前言
  • 一、安装
  • 二、源码包介绍
    • 2-1、源码包sdist
      • 2-1-1、打包成源码包sdist
      • 2-1-2、安装源码包
    • 2-2、二进制包bdist
      • 2-2-1、打包成源码包bdist
      • 2-2-2、安装源码包bdist
  • 三、setup文件以及相关参数介绍
    • 3-1、setup文件简介
    • 3-2、setup其他参数介绍
      • 3-2-1、find_packages()函数和find_namespace_packages()函数
      • 3-2-2、include_package_data(MANIFEST.in)
      • 3-2-3、MANIFEST.in 文件介绍
      • 3-2-4、依赖包安装与版本管理
  • 总结

前言

setuptools可以帮助我们创建和分发Python包,而当用户在使用setuptools创建的包时,就可以像调用标准库或者是python第三方库那样直接使用,并不需要安装setuptools,只要一个启动模块就可以。


一、安装

#
pip install setuptools

二、源码包介绍

首先python库的打包分发方式有两种:源码包source dist(sdist)、二进制包binary dist(bdist)。

2-1、源码包sdist

2-1-1、打包成源码包sdist

python setup.py sdist
# 源码包sdist就是我们熟悉的.zip、.tar.gz等后缀文件,就是一个压缩包。
# setup.py 在第三里会介绍,它指定了打包分发的一些配置信息。
# 不指定格式的话,sdist会根据当前平台创建默认格式,在类 Unix 平台上,将创建后缀名为.tar.gz分发包,而在Windows上为 .zip 文件。
# 加参数可以指定文件格式 --formats=gztar

2-1-2、安装源码包

打包后的文件在新生成的dist文件夹下,以及多了一些中间临时配置信息(egg-info文件)
先把源码包进行解压缩,之后再执行setup.py

python setup.py install

或者是用pip命令直接安装源码包

pip install xxx.zip
# notice:该命令会将当前的Python应用安装到当前的Python环境的“site-packages”目录下,这样其他程序就可以像导入标准库一样导入该应用的代码了

2-2、二进制包bdist

2-2-1、打包成源码包bdist

与源码包相比,二进制包的特点是不用再编译,也就是安装更快。

# python目前主流的二进制包格式是wheel(.whl后缀),它的前身是egg。wheel本质也还是一个压缩包,可以像zip一样解压缩。还有其他一些格式诸如rpm、wininst等。
# 在使用wheel之前,需要先安装wheel: pip install wheel
# 这里以打包成rpm格式为例:
python setup.py bdist --format=rpm
# 等价于
python setup.py build_rpm
# 等价于
python setup.py bdist_rpm# 还有目前的主流二进制包,wheel是目前官方推荐的打包方式。
python setup.py build_wheel
# 等价于
python setup.py bdist_wheel# 生成源码包的路径和sdist相同
# eg: 如果使用bdist_wininst,打出来的是exe安装文件,可以点击安装

2-2-2、安装源码包bdist

pip install xxx.whl

三、setup文件以及相关参数介绍

3-1、setup文件简介

构建前的结构应该包含

# notice: 应该包含文件夹:demo、dist、docs,包含代码文件setup.py

setup.py文件

# encoding: utf-8
from setuptools import setup, find_packagesimport refrigerator_apcsetup(# name: 应用名, 即包名name='refrigerator_apc',# version:版本号version=refrigerator_apc.__version__,# 包括在安装包内的Python包packages=find_packages(),# author:作者名author='wang',# author_email: 作者邮箱# description: 描述# url: 项目主页# python_requires: 对python版本进行限制。python_requires='>=3.6',platforms='any',# install_requires: 自动安装依赖install_requires=["pandas","numpy",])

3-2、setup其他参数介绍

3-2-1、find_packages()函数和find_namespace_packages()函数

这两个函数都是用来指定packages参数的,而packages参数是用来指示打包分发时需要包含的package,类型为list[str]
1、find_packages()函数:

# 只会打包包含__init__.py的package以及setup.py文件
# notice:假设包含__init__.py的文件夹里还有一个文件data,data文件夹里没有__init__.py,那么data文件将不会被打包from setuptools import setup
setup(packages=find_packages()
)

2、find_namespace_packages()函数

# 为了打包所有的文件,我们会使用find_namespace_packages()函数from setuptools import setup
setup(packages=find_namespace_packages()# notice: 如果只想指定某个文件夹,那么我们可以直接在find_namespace_packages中加参数。# packages=find_namespace_packages('src')
)

3-2-2、include_package_data(MANIFEST.in)

find_packages()函数和find_namespace_packages()函数打包的是源码文件和setup.py文件。非源码文件(如.dat和.txt文件)需要别的参数(include_package_data)来打包

# include_package_data:bool类型,默认为True,当为True时,根据MANIFEST.in文件来打包分发库

3-2-3、MANIFEST.in 文件介绍

# define: 该文件指定了一些语法规则,主要是用来打包非源码文件的
#
include pat1: 添加与任何列出的模式匹配得所有文件
exclude pat1: 删除
recursive-include dir-pattern pat1: 递归dir-pattern及其子文件夹,添加
recursive-exclude dir-pattern pat1: 删除
graft dir-pattern: 添加匹配目录下的所有文件
prune dir-pattern: 删除
global-include pat1# eg:
include src/pack1/*.txt
# 更多信息请参考结尾第二个链接

3-2-4、依赖包安装与版本管理

from setuptools import setup,find_packages
setup(# 表明当前模块依赖哪些包,若环境中没有,则会从pypi中自动下载安装# 只包含包名,这种形式只检查包的存在性,不检查版本。install_requires=['numpy']# setup.py本身要依赖的包,这里列出的包,不会自动安装setup_requires = ['']# 测试时使用的依赖# 执行python setup.py test时,可以自动安装,确保测试的正常运行tests_require=[# 自动保持版本为最新'pandas>=3.1.1'# 指定了版本,把风险降到了最低,确保了开发,测试与部署的版本一致,不会出现意外,但是不利于更新。'tensorflow==2.7.1']
)

参考文章:
Python打包分发工具setuptools使用教程.
python打包分发工具:setuptools.

setuptools详解.
Setuptools 【Python工具包详解】.
Python打包之setuptools .
Python的setuptools加密和打包分发项目.
Python打包分发工具setuptools.


总结

Setuptools(Python打包工具)相关推荐

  1. Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子

    Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子 目录 Python打包工具Pyintealler打包py文件为windows exe文件过程 ...

  2. python打包工具报错_Python打包发布神器—Pyinstaller

    一前言 在windows平台学习python的过程中,你肯定会遇到需要把.py脚本打包成.exe的情形,如此,至少有两方面的好处:第一,你的代码保密性更好,其他人不能直接看到python代码:第二,打 ...

  3. Python打包工具setuptools的使用

    将我们写的Python程序发布成包后,可以使其能够安装使用. 在项目上测试的时候,某些情况下,可以将Python打包,然后上传到测试服务器,安装测试. setuptools是常用的打包工具. 一个简单 ...

  4. python打包工具哪个好用_python打包工具比较

    前一段用python写了点小工具,希望能给同事用,这里总结一下python的打包以及构建的方法. 首先是一些需要安装依赖包的方法,这也是比较推荐的正统的方法. 1.setuptools or pip ...

  5. Python打包工具

    目前几个主要的活跃 PyInstaller,成熟,用户最多:其原理就是复制文件.支持打包成onefile的可执行文件.目录两个方式.PyArmor有对其官方适配. cx_Freezer,原理与PyIn ...

  6. python打包工具报错_Pyinstaller打包.py生成.exe的方法和报错总结

    Pyinstaller 打包.py生成.exe的方法和报错总结 简介 有时候自己写了个python脚本觉得挺好用想要分享给小伙伴,但是每次都要帮他们的电脑装个python环境.虽然说装一下也快,但是相 ...

  7. Python 打包工具 pyinstaller

    介绍 官网 PyInstaller将 Python 应用程序及其所有依赖项捆绑到一个包中.用户无需安装 Python 解释器或任何模块即可运行打包的应用程序. PyInstaller支持 Python ...

  8. pythoninstaller打包_最详细的Python打包工具:Pyinstaller实战指南,如丝滑般体验!-installer文件夹...

    写了个吊炸天的Python项目,把我和左手相处的时间都赔上了.但出于版权考虑,我不太想让使用方直接用我的代码,毕竟Python代码给出去,就真的收不回来了. 想给客户演示的时候,不想那么墨迹的打开do ...

  9. 类似pyinstaller_全网首份Python打包工具Pyinstaller实战指南,如丝滑般体验

    写了个吊炸天的Python项目,把我和左手相处的时间都赔上了.但出于版权考虑,我不太想让使用方直接用我的代码,毕竟Python代码给出去,就真的收不回来了.学习Python中有不明白推荐加入交流群 号 ...

最新文章

  1. UltraTextEditor
  2. 动态IP代理软件有话说:天下爬虫框架皆出Scrapy
  3. Android 插件化原理解析——插件加载机制
  4. 漳州市2021高考成绩查询,漳州市招生管理系统2021漳州中考成绩查询入口
  5. python 调用mysql_Python中直接在MySQL执行SQL命令
  6. C. Liebig's Barrels
  7. Android 封装一个通用的PopupWindow
  8. 信息竞赛进阶指南--最小表示法
  9. java udp 接受阻塞_Java UDP发送与接收
  10. 数据结构 - 顺序存储二叉树(前序中序后序遍历)
  11. UVa 1635 无关的元素(唯一分解定理+二项式定理)
  12. 查看程序用运时占用的内存
  13. Iframe背景透明
  14. python分号_python分号_python 分号_python加分号 - 云+社区 - 腾讯云
  15. php 字符显示不出来,ps文字显示不出来怎么办?
  16. 化学反应的常微分方程求解(Python)
  17. 是时候适配 Swift 3 了吗——专访 LINE iOS 开发工程师王巍
  18. putc与stdin,stdout,stderr
  19. moviepy音视频剪辑:视频基类VideoClip子类VideoFileClip、CompositeVideoClip、ImageSequenceClip介绍
  20. 用Python获取公众号阅读数、点赞数。

热门文章

  1. 说说翻转的数据结构课
  2. ZOJ 3755 - Mines (状压DP)
  3. LeetCode--第25题K个一组翻转链表
  4. 《SolidCAM+SolidWorks 2014中文版数控加工从入门到精通》——第1章 SolidCAM基础 1.1 CAD/CAM基础...
  5. qq邮箱mx服务器,QQ域名邮箱管理系统MX记录是什么?怎么添加设置?
  6. 文件服务器查询重复文件,DupScout – 重复文件扫描、删除或移动的免费工具
  7. python excel处理 pandas 统计重复数据
  8. 24个希腊字母的英文写法
  9. 数字PCR简介(一)
  10. 电力爱陆通公专一体模块,国网加密模块,国网硬件加密模块的工作原理