Python的打包工具(setup.py)实战篇

简介: 关于如何使用Python的setup.py工具打包Python项目的实战教程。

作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。

  当你写好一个Python项目时,想要开源或者给别的小伙伴使用,这个时候就可以考虑使用打包工具来做这个事情,Python内置的setup.py工具就自带了这个功能,本片博客将带你来打包一个自己写的python项目。

  学会python打包后,可以把自己写好的模块发布到公共的PyPI(https://pypi.org/)上,也可以搭建PyPI私服,供企业内部使用。

  目前PyPI里面的模块没用太好的审核机制,不保证安全,因此要慎重使用。据说,数据分析领域基于python的开源模块在不同的操作系统算出的结果竟然不同,这意味着所有基于该模块的计算发表的论文结果都是不准确的!

一.查找setup帮助文档

1>.找到setup的帮助文档,如下图所示

2>.如下图所示,点击"Distttributing Python Modules(Legacy version)"

3>.如下图所示,点击"Writing the Setup Script"

4>.阅读官网文档

5>.在自己的项目根目录下创建setup.py文件,修改内容如下所示

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @author :yinzhengjie
# blog:https://www.cnblogs.com/yinzhengjie

from distutils.core import setup

setup(
    # 指定项目名称,我们在后期打包时,这就是打包的包名称,当然打包时的名称可能还会包含下面的版本号哟~
    name='devops',
    # 指定版本号
    version='0.1.1',
    # 这是对当前项目的一个描述
    description='Python automatic operation and maintenance platform',
    # 作者是谁,指的是此项目开发的人,这里就写你自己的名字即可
    author='yinzhengjie',
    # 作者的邮箱
    author_email='y1053419035@qq.com',
    # 写上项目的地址,比如你开源的地址开源写博客地址,也开源写GitHub地址,自定义的官网地址等等。
    url='https://www.cnblogs.com/yinzhengjie/p/14124623.html',
    # 指定包名,即你需要打包的包名称,要实际在你本地存在哟,它会将指定包名下的所有"*.py"文件进行打包哟,但不会递归去拷贝所有的子包内容。
    # 综上所述,我们如果想要把一个包的所有"*.py"文件进行打包,应该在packages列表写下所有包的层级关系哟~这样就开源将指定包路径的所有".py"文件进行打包!
    packages=['devops', "devops.dev", "devops.ops"],
)

二.使用setup.py工具对自定义package进行打包操作

1>.查看setup.py工具的帮助信息

python setup.py --help-commands

2>.编译python的包(本质上是新建了一个build目录,而后将指定的packages列表包下的所有".py"文件拷贝过去)

python setup.py build

3>.将源文件进行打包操作

python setup.py sdist

4>.基于我们刚刚打包的文件进行安装

pip install test/dist/devops-0.1.1.tar.gz

5>.卸载咱们刚刚安装的包

pip uninstall devops

三.bdist命令

  bdist命令是一个二进制分发包,或称作安装程序。该命令可以生成模板操作系统的安装程序。

1>.制作windows下的安装包

python setup.py bdist_wininst  # 创建"*.exe"的文件
python setup.py bdist_msi  # 创建"*.msi"的文件
python setup.py bdist --format=msi  # 同样是创建"*.msi"的文件

2>.制作rpm包

python setup.py bdist_rpm  # 创建"*.rpm"的文件,该命令需要在Linux操作系统上执行!
python setup.py bdist --format=rpm  # 同上

3>.制作压缩文件

python setup.py bdist --format=zip  # 创建"*.zip"压缩文件
python setup.py bdist --format=gztar  # 创建"*.tar.gz"文件

四.将python打包成egg包或者whl包(本质上是一个zip文件)

1>.安装wheel模块

pip install wheel

2>.修改"setup.py"文件

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @author :yinzhengjie
# blog:https://www.cnblogs.com/yinzhengjie

# from distutils.core import setup
from setuptools import setup  # 注意哈,setuptools是基于distutils进行封装的,但打wheel包时要从setuptools包导入setup模块哟~
setup(
    # 指定项目名称,我们在后期打包时,这就是打包的包名称,当然打包时的名称可能还会包含下面的版本号哟~
    name='devops',
    # 指定版本号
    version='0.1.1',
    # 这是对当前项目的一个描述
    description='Python automatic operation and maintenance platform',
    # 作者是谁,指的是此项目开发的人,这里就写你自己的名字即可
    author='yinzhengjie',
    # 作者的邮箱
    author_email='y1053419035@qq.com',
    # 写上项目的地址,比如你开源的地址开源写博客地址,也开源写GitHub地址,自定义的官网地址等等。
    url='https://www.cnblogs.com/yinzhengjie/p/14124623.html',
    # 指定包名,即你需要打包的包名称,要实际在你本地存在哟,它会将指定包名下的所有"*.py"文件进行打包哟,但不会递归去拷贝所有的子包内容。
    # 综上所述,我们如果想要把一个包的所有"*.py"文件进行打包,应该在packages列表写下所有包的层级关系哟~这样就开源将指定包路径的所有".py"文件进行打包!
    packages=['devops', "devops.dev", "devops.ops"],
)

3>.打包whl和egg格式,如下图所示

python setup.py bdist_egg  # 打"*.egg"的包
python setup.py bdist_wheel  # 打"*.whl"的包

目录
相关文章
|
2天前
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
34 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
1月前
|
测试技术 数据库 Python
Python装饰器实战:打造高效性能计时工具
在数据分析中,处理大规模数据时,分析代码性能至关重要。本文介绍如何使用Python装饰器实现性能计时工具,在不改变现有代码的基础上,方便快速地测试函数执行时间。该方法具有侵入性小、复用性强、灵活度高等优点,有助于快速发现性能瓶颈并优化代码。通过设置循环次数参数,可以更准确地评估函数的平均执行时间,提升开发效率。
106 61
Python装饰器实战:打造高效性能计时工具
|
4天前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
23 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
4天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
29 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
28天前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
106 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
1月前
|
数据可视化 算法 数据挖掘
Python时间序列分析工具Aeon使用指南
**Aeon** 是一个遵循 scikit-learn API 风格的开源 Python 库,专注于时间序列处理。它提供了分类、回归、聚类、预测建模和数据预处理等功能模块,支持多种算法和自定义距离度量。Aeon 活跃开发并持续更新至2024年,与 pandas 1.4.0 版本兼容,内置可视化工具,适合数据探索和基础分析任务。尽管在高级功能和性能优化方面有提升空间,但其简洁的 API 和完整的基础功能使其成为时间序列分析的有效工具。
80 37
Python时间序列分析工具Aeon使用指南
|
4天前
|
存储 数据采集 数据库
Python爬虫实战:股票分时数据抓取与存储
Python爬虫实战:股票分时数据抓取与存储
|
28天前
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
56 20
|
Python
PYTHON实战两数之和
1. 两数之和 难度:简单 收藏 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。
207 0
PYTHON实战两数之和
|
2月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!

热门文章

最新文章

推荐镜像

更多