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. 补充配套规范文件
- README.md:编写项目简介、安装方式、使用示例,提升可读性;
- LICENSE:添加 MIT、Apache 等开源许可协议,明确使用权限;
- CHANGELOG.md:记录每个版本的新增功能、修复 bug、功能变更,方便版本追溯。
四、生成源码包与 Wheel 安装包
完成项目配置后,执行一条命令即可同时生成两种标准安装包:
python setup.py sdist bdist_wheel
1. 打包产物说明
执行完毕后,项目根目录会生成dist文件夹,内含两类文件:
.tar.gz:源码分发包,跨平台通用,安装时会现场编译;.whl:Wheel 二进制包,安装速度更快,pip 优先选择该格式安装。
2. 消除打包警告
若打包时提示缺少 README、许可信息等警告,只需补齐上文提到的README.md、LICENSE文件,并完善 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 直接安装,只需两步:
- 安装上传工具
twine:pip install twine; - 配置 PyPI 账号,通过 twine 将
dist下的包文件上传至 PyPI 官方仓库。
后续即可直接执行pip install mytool在线安装开源项目。
到此这篇关于Python进行项目打包的完整流程的文章就介绍到这了,更多相关Python项目打包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
