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项目打包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • OpenCV+python实现实时目标检测功能

    OpenCV+python实现实时目标检测功能

    这篇文章主要介绍了OpenCV+python实现实时目标检测功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • python小白学习包管理器pip安装

    python小白学习包管理器pip安装

    在本篇文章里小编给大家分享的是一篇python包管理器pip安装的相关知识点内容,有兴趣的朋友们参考下。
    2020-06-06
  • Python多图片合并PDF的方法

    Python多图片合并PDF的方法

    今天小编就为大家分享一篇关于Python多图片合并PDF的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • python可视化hdf5文件的操作

    python可视化hdf5文件的操作

    这篇文章主要介绍了python可视化hdf5文件的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • Python短信轰炸的代码

    Python短信轰炸的代码

    这篇文章主要介绍了Python短信轰炸的代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • python中watchdog文件监控与检测上传功能

    python中watchdog文件监控与检测上传功能

    这篇文章主要介绍了python中watchdog文件监控与检测上传功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Python开启线程,在函数中开线程的实例

    Python开启线程,在函数中开线程的实例

    今天小编就为大家分享一篇Python开启线程,在函数中开线程的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • Python中使用支持向量机(SVM)算法

    Python中使用支持向量机(SVM)算法

    这篇文章主要为大家详细介绍了Python中使用支持向量机SVM算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Python3以GitHub为例来实现模拟登录和爬取的实例讲解

    Python3以GitHub为例来实现模拟登录和爬取的实例讲解

    在本篇内容里小编给大家分享的是关于Python3以GitHub为例来实现模拟登录和爬取的实例讲解,需要的朋友们可以参考下。
    2020-07-07
  • opencv中颜色空间转换函数cv2.cvtColor()使用

    opencv中颜色空间转换函数cv2.cvtColor()使用

    本文主要介绍了opencv中颜色空间转换函数cv2.cvtColor()使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论