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"的包

目录
相关文章
|
5天前
|
Shell 开发者 Docker
Python文件打包:一站式指南
本文深入探讨Python文件打包的各种方法,从基础的zip和tar工具到高级的setuptools、PyInstaller、cx_Freeze等,涵盖Docker镜像、虚拟环境及自包含可执行文件的打包方式。通过示例代码与详细解析,帮助开发者根据项目需求选择合适的打包方案,提升代码分发与部署效率。内容全面,适合各水平读者学习参考。
|
5天前
|
数据采集 JSON API
Python 实战:用 API 接口批量抓取小红书笔记评论,解锁数据采集新姿势
小红书作为社交电商的重要平台,其笔记评论蕴含丰富市场洞察与用户反馈。本文介绍的小红书笔记评论API,可获取指定笔记的评论详情(如内容、点赞数等),支持分页与身份认证。开发者可通过HTTP请求提取数据,以JSON格式返回。附Python调用示例代码,帮助快速上手分析用户互动数据,优化品牌策略与用户体验。
|
7天前
|
数据采集 存储 缓存
Python爬虫与代理IP:高效抓取数据的实战指南
在数据驱动的时代,网络爬虫是获取信息的重要工具。本文详解如何用Python结合代理IP抓取数据:从基础概念(爬虫原理与代理作用)到环境搭建(核心库与代理选择),再到实战步骤(单线程、多线程及Scrapy框架应用)。同时探讨反爬策略、数据处理与存储,并强调伦理与法律边界。最后分享性能优化技巧,助您高效抓取公开数据,实现技术与伦理的平衡。
40 4
|
14天前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
48 7
|
19天前
|
数据采集 JavaScript 前端开发
Pyppeteer实战:基于Python的无头浏览器控制新选择
本文详细讲解了如何使用 Pyppeteer 结合爬虫代理高效采集小红书热点推荐信息。通过设置代理 IP、Cookie 和自定义 User-Agent,突破目标网站的反爬机制,实现标题、内容和评论的数据提取。文章结合代码示例与技术关系图谱,清晰展示从数据采集到分析的全流程,为复杂网站的数据获取提供参考。读者可在此基础上优化异常处理、并发抓取等功能,提升爬虫性能。
|
5天前
|
数据采集 JSON API
Python 实战!利用 API 接口获取小红书笔记详情的完整攻略
小红书笔记详情API接口帮助商家和数据分析人员获取笔记的详细信息,如标题、内容、作者信息、点赞数等,支持市场趋势与用户反馈分析。接口通过HTTP GET/POST方式请求,需提供`note_id`和`access_token`参数,返回JSON格式数据。以下是Python示例代码,展示如何调用该接口获取数据。使用时请遵守平台规范与法律法规。
|
1月前
|
缓存 安全 Android开发
Python实战:搭建短信转发器,实现验证码自动接收与处理
在移动互联网时代,短信验证码是重要的安全手段,但手动输入效率低且易出错。本文介绍如何用Python搭建短信转发器,实现验证码自动接收、识别与转发。通过ADB工具监听短信、正则表达式或ddddocr库提取验证码,并利用Flask框架转发数据。系统支持多设备运行,具备安全性与性能优化功能,适合自动化需求场景。未来可扩展更多功能,提升智能化水平。
119 1
|
1月前
|
数据采集 XML 存储
Python爬虫实战:一键采集电商数据,掌握市场动态!
这个爬虫还挺实用,不光能爬电商数据,改改解析规则,啥数据都能爬。写爬虫最重要的是要有耐心,遇到问题别着急,慢慢调试就成。代码写好了,运行起来那叫一个爽,分分钟几千条数据到手。
|
1月前
|
机器学习/深度学习 存储 设计模式
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。

热门文章

最新文章

下一篇
oss创建bucket
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等