Python进行项目打包的完整流程

 更新时间:2026年05月28日 08:25:19   作者:曾阿伦  
在 Python 开发日常工作中,直接传输源码文件共享项目,这种方式不仅杂乱无章,还难以管理版本、依赖和更新,借助 Python 官方内置的setuptools工具,就能快速将普通脚本、项目模块打包成标准可安装包,本文通过代码示例给大家详细介绍了Python项目打包的完整流程

前言

在 Python 开发日常工作中,直接传输源码文件共享项目,这种方式不仅杂乱无章,还难以管理版本、依赖和更新。借助 Python 官方内置的setuptools工具,就能快速将普通脚本、项目模块打包成标准可安装包,支持本地 pip 安装、团队内网分发,也能为后续上传 PyPI 开源发布打好基础。

一、环境准备

确保基础依赖工具为最新版本,避免打包报错:

# 升级打包核心工具
pip install --upgrade setuptools
# 安装wheel,用于生成二进制wheel包
pip install wheel

推荐 Python 3.6 及以上版本,兼容主流开发环境。

二、单文件模块快速打包

适合仅有单个 Python 脚本、功能简单的小工具,无需复杂目录结构。

1. 项目目录结构

极简结构仅需两个文件:

simple_module_proj/
├── setup.py       # 打包配置核心文件
└── demo_func.py   # 业务功能代码

2. 编写业务代码 demo

def calculate_sum(a, b):
    """简单求和工具函数"""
    return a + b

3. 编写极简打包配置

setuptools的核心配置文件,声明包名和关联模块:

from setuptools import setup

setup(
    name="demo_func",  # pip安装时的包名
    py_modules=["demo_func"]  # 关联本地py文件名,无需带后缀
)

4. 本地直接 pip 安装测试

进入项目上级目录,执行本地安装命令:

pip install ./simple_module_proj/

安装成功后,可在任意 Python 环境中直接导入使用:

from demo_func import calculate_sum
print(calculate_sum(10, 20))  # 输出30

三、标准包结构打包

实际开发中多为多文件、多模块项目,采用src 源码目录规范结构,结构清晰、便于维护和扩展。

1. 标准项目目录结构

standard_package_proj/
├── src/
│   └── mytool/          # 包名,导入时使用
│       ├── __init__.py  # 标识为Python包
│       └── core.py      # 核心业务模块
├── setup.py             # 打包配置
├── README.md            # 项目说明文档
├── LICENSE              # 开源许可文件
└── CHANGELOG.md         # 版本变更日志

2. 编写核心业务代码

def get_version():
    """获取工具版本号"""
    return "1.0.0"

def print_info():
    print("Python打包测试工具")

3. 配置init.py 暴露接口

通过该文件简化外部导入方式,直接暴露模块函数:

# src/mytool/__init__.py
from .core import get_version, print_info

配置后可直接通过包名调用函数,无需嵌套模块层级。

4. 完善完整版

相比极简版,补充版本、作者、描述、仓库地址等完整信息,消除打包警告,满足规范发布要求:

from setuptools import setup, find_packages

setup(
    name="mytool",
    version="1.0.0",
    description="Python标准化打包示例工具",
    author="开发作者",
    author_email="xxx@xxx.com",
    url="https://github.com/xxx/mytool",  # 项目仓库地址
    # 自动扫描src下所有包
    packages=find_packages(where="src"),
    package_dir={"": "src"},  # 指定源码根目录为src
    python_requires=">=3.6"  # 限制Python最低版本
)

5. 补充配套规范文件

  1. README.md:编写项目简介、安装方式、使用示例,提升可读性;
  2. LICENSE:添加 MIT、Apache 等开源许可协议,明确使用权限;
  3. CHANGELOG.md:记录每个版本的新增功能、修复 bug、功能变更,方便版本追溯。

四、生成源码包与 Wheel 安装包

完成项目配置后,执行一条命令即可同时生成两种标准安装包:

python setup.py sdist bdist_wheel

1. 打包产物说明

执行完毕后,项目根目录会生成dist文件夹,内含两类文件:

  • .tar.gz源码分发包,跨平台通用,安装时会现场编译;
  • .whlWheel 二进制包,安装速度更快,pip 优先选择该格式安装。

2. 消除打包警告

若打包时提示缺少 README、许可信息等警告,只需补齐上文提到的README.mdLICENSE文件,并完善 setup.py 基础信息,重新打包即可无警告生成安装包。

五、本地离线批量安装包

适合无外网的内网服务器、团队本地共享场景,可批量存放安装包并离线安装。

1. 整理安装包

在项目内新建packages文件夹,将dist目录下的.whl.tar.gz文件复制进去:

# Windows示例
mkdir packages
copy dist\* packages\

2. 离线安装命令

不依赖外网 PyPI 源,从本地目录查找并安装:

# 安装最新版本
pip install --no-index --find-links=./packages mytool
# 指定安装特定版本
pip install --no-index --find-links=./packages mytool==1.0.0

安装后全局环境即可永久使用该包,和从 PyPI 在线安装体验完全一致。

六、发布到 PyPI 开源

若需要将项目开源,供全网开发者通过 pip 直接安装,只需两步:

  1. 安装上传工具twinepip install twine
  2. 配置 PyPI 账号,通过 twine 将dist下的包文件上传至 PyPI 官方仓库。

后续即可直接执行pip install mytool在线安装开源项目。

到此这篇关于Python进行项目打包的完整流程的文章就介绍到这了,更多相关Python项目打包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现将HTML表格一键导出为Excel(xlsx)的实战指南

    Python实现将HTML表格一键导出为Excel(xlsx)的实战指南

    在数据采集、网页解析或自动化报表场景中,我们经常会遇到需要将HTML 页面中提取的表格数据导出为Excel文件,下面我们就来看看如何使用Python实现这一功能吧
    2026-01-01
  • PyQt5中QSpinBox计数器的实现

    PyQt5中QSpinBox计数器的实现

    这篇文章主要介绍了PyQt5中QSpinBox计数器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Python在Console下显示文本进度条的方法

    Python在Console下显示文本进度条的方法

    Python是一门与php有点像的编辑语言了,下文来给各位在利用Python实现进度条了,对Python在Console下显示文本进度条的方法相关知识感兴趣的朋友一起学习吧
    2016-02-02
  • Django初步使用Celery处理耗时任务和定时任务问题

    Django初步使用Celery处理耗时任务和定时任务问题

    这篇文章主要介绍了Django初步使用Celery处理耗时任务和定时任务问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 使用PyInstaller将Python脚本打包成exe的新手入门指南

    使用PyInstaller将Python脚本打包成exe的新手入门指南

    用 PyInstaller 打包成单个 exe 文件,双击就能运行,省心又专业,本文从零开始手把手教你用 PyInstaller 打包 Python 程序,解决新手常遇到的坑,希望对大家有所帮助
    2026-03-03
  • Python实战之设计一个多功能办公小工具

    Python实战之设计一个多功能办公小工具

    这篇文章主要介绍了通过Python制作一个多功能的办公小工具,可以实现应用、网页直达以及天气查询,代码具有一定学习价值,需要的小伙伴可以了解一下
    2021-12-12
  • Python下载懒人图库JavaScript特效

    Python下载懒人图库JavaScript特效

    本文给大家分享的是使用Python 爬虫抓取懒人图库的JS脚本特效模板的代码,使用了第三方库gevent来实现,有需要的小伙伴可以参考下。
    2015-05-05
  • Python简单实现socket信息发送与监听功能示例

    Python简单实现socket信息发送与监听功能示例

    这篇文章主要介绍了Python简单实现socket信息发送与监听功能,结合实例形式分析了Python基于socket构建客户端与服务器端通信相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • Python处理文本文件中控制字符的方法

    Python处理文本文件中控制字符的方法

    最近在使用Python的时候遇到过文档中出现控制字符报错的问题。想着总结一下,方便以后需要或这同样遇到问题的朋友,下面这篇文章主要介绍了Python处理文本文件中控制字符的解决方法,需要的朋友可以参考借鉴。
    2017-02-02
  • python将Dataframe格式的数据写入opengauss数据库并查询

    python将Dataframe格式的数据写入opengauss数据库并查询

    这篇文章主要介绍了python将Dataframe格式的数据写入opengauss数据库并查询,文章介绍详细具有一定的参考价值,希望对你的学习有所帮助
    2022-04-04

最新评论