news 2026/6/9 18:54:03

Python 源码打包成.whl文件的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 源码打包成.whl文件的完整指南

Python 项目开发完成后,如何优雅地发布和安装?传统的python setup.py install虽然可用,但不够现代化,也不方便在不同环境中快速分发。今天,我们就来详细讲解如何将 Python 源码打包成.whl文件(Wheel),并进行安装和分发。


一、为什么选择 .whl 文件

.whl是 Python 官方推荐的二进制分发格式,相比传统的源码安装有几个优势:

  • 快速安装:不需要编译,直接pip install xxx.whl
  • 跨平台(纯 Python):如果没有 C 扩展,可以在不同操作系统间通用
  • 规范标准:兼容现代 Python 打包工具,如pipbuild
  • 可控依赖:打包时可以指定依赖,安装时自动拉取

二、项目结构准备

假设你的项目名称是mypkg,最基础的目录结构如下:

mypkg/ ├── mypkg/ │ ├── __init__.py │ └── core.py ├── README.md ├── setup.py # 传统方式 └── pyproject.toml # 现代方式推荐

  • mypkg/:核心代码
  • setup.py:兼容老项目的打包配置
  • pyproject.toml:现代标准的打包配置

三、现代方式:pyproject.toml 打包

Python 官方推荐使用 PEP 517/518 标准,通过pyproject.toml来描述构建和依赖信息。

1. 安装打包工具

pip install build wheel setuptools

2. 配置pyproject.toml

[build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "mypkg" version = "0.1.0" description = "My Python Package" readme = "README.md" authors = [ { name="Your Name", email="you@example.com" } ] dependencies = [] [tool.setuptools.packages.find] where = ["."]

3. 构建.whl文件

在项目根目录执行:

python -m build

生成结果在dist/目录:

dist/ ├── mypkg-0.1.0-py3-none-any.whl └── mypkg-0.1.0.tar.gz

4. 本地安装测试

pip install dist/mypkg-0.1.0-py3-none-any.whl


四、传统方式:setup.py打包

对于老项目,如果还在用setup.py,也可以生成.whl

# setup.py from setuptools import setup, find_packages setup( name="mypkg", version="0.1.0", packages=find_packages(), install_requires=[], )

构建:

python setup.py bdist_wheel

生成的.whl文件同样在dist/目录。


五、源码保护与加密(可选)

.whl文件本质上仍然包含源码,如果想防止直接查看 Python 代码,可以考虑:

方案 1:Cython 编译

.py → .pyx → .so / .pyd → 打包成 whl

适合核心逻辑不想暴露的商业项目。

方案 2:PyArmor 混淆

pip install pyarmor pyarmor gen mypkg/

可以对源码进行混淆,提高反编译成本。


六、总结

  1. .whl是现代 Python 项目的推荐分发格式
  2. 现代方式使用pyproject.toml+build,简单快捷
  3. 传统方式setup.py依然可用
  4. 可选混淆/编译策略保护核心源码

通过打包成.whl,你可以方便地分发、安装和管理 Python 项目,让用户体验更流畅,也方便 CI/CD 自动化部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/7 6:55:27

渗透测试反弹 shell 常用技巧(怎么实现渗透测试反弹 shell)—Windows 渗透实战!

反弹shell介绍 反弹shell主要就是让我们能远程连接到目标控制台并且下达指令,来达到操控目标资产的目的! 反弹shell分为: 正向反弹: 控制端(也就是我们自己的机器)发送请求去连接被控端(目标机器)的方式。 不过这种方式会受到防火墙,路由,等各种很多因素影响,很难成功。 反向…

作者头像 李华
网站建设 2026/6/7 7:07:22

程序员福音!ReAct模式让大模型“知行合一“,小白也能开发智能AI!

ReAct是一种将推理(Reasoning)与行动(Acting)结合的AI范式,让大模型交替生成思考(Thought)和行动(Action)。它解决了纯推理模型(CoT)的幻觉问题和纯行动模型缺乏高层规划的缺陷。ReAct通过协同推理与行动,提高了解决复杂任务的能力,增强了模型…

作者头像 李华
网站建设 2026/6/7 10:57:45

2026 IT选型趋势下AI+CRM的创新实践与选型指南

近日,权威机构企业网D1Net发布的《2026 IT选型规划趋势调研及分析》报告显示,2026年IT选型市场呈现出“AI为核、业务驱动、预算稳健增长”的鲜明特征。 虽然数字化转型进入AI深度赋能的新阶段,但企业对CRM等传统核心系统的优化需求依然强劲&…

作者头像 李华
网站建设 2026/6/7 11:40:13

【Java毕设全套源码+文档】基于springboot的个性化推荐影院网站设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/9 7:53:03

【Java毕设全套源码+文档】基于springboot的小型民营加油站管理系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华