news 2026/2/26 15:44:30

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/2/12 13:41:43

COMSOL在载荷作用下的多层复合材料蠕变特性深度解析

comsol,载荷作用下,多层复合材料的蠕变分析。COMSOL是进行多物理场仿真分析的强大工具,尤其是在分析复杂材料行为时,它能帮助我们更好地理解材料在载荷作用下的响应。今天,我们就来聊一聊如何使用COMSOL对多层复合材料…

作者头像 李华
网站建设 2026/2/11 2:27:48

孤能子视角:“孤能子视角“的阶段性小结

(这里让知乎AI回答。同时澄清概念误解。)我的问题:1.孤能子视角。(注:看AI是否了解理论)2.它最深刻的部分是它的自我批判,没见过有理论是这样虐待自己的。(注:逼AI找问题)3.你说的那些我倒是理解的,理论说了,理论框架的概念与传统概念不一样(…

作者头像 李华
网站建设 2026/2/25 20:23:59

【2025年度创作总结】从笔记到实践,从思考到生活融合

2025 年度技术成长与创作盘点:从笔记到实践,从思考到生活融合 2025 年,对我来说是技术深耕与自我加速的一年。一年来,我围绕 算法体系、C 工程实战、Linux 系统编程、Java 企业级开发、辅助技术工具(如 Git、Protobuf&…

作者头像 李华
网站建设 2026/2/22 23:17:19

OCR+大模型!信息抽取效率狂飙,这对CP太顶了!

OCR 大模型!信息抽取效率狂飙,这对 CP 太顶了! 打工人快看!还在手动扒文档、熬夜做报表?OCR 和大模型这对 “智能 CP”,直接让信息抽取效率起飞! 以前,想从合同、发票里捞关键信息&…

作者头像 李华