news 2026/4/17 2:03:40

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/4/16 5:57:59

Markdown嵌入交互式图表展示PyTorch训练曲线

在容器化环境中实现 PyTorch 训练过程的交互式可视化 在深度学习项目中,模型训练不再是“跑完代码就结束”的黑箱操作。越来越多的团队开始重视实验过程的可读性、结果的可复现性以及跨角色沟通效率——尤其是当数据科学家需要向产品经理展示收敛趋势,或…

作者头像 李华
网站建设 2026/4/16 3:17:47

【2026年3月】计算机二级WPS真题试卷及解析14套~电子版PDF

2026年3月全国计算机等级考试将于3月28-30日举行!为帮助广大考生高效备考,小为精心搜集并整理了最新版(备考2026年3月)的计算机二级WPSoffice电子版真题题库,共14套(其中第14套为去年9月份新考的&#xff0…

作者头像 李华
网站建设 2026/4/16 5:58:26

GitHub Pages搭建个人技术博客链接PyTorch项目

GitHub Pages 搭建个人技术博客并集成 PyTorch 项目实践 在深度学习项目开发中,一个常被忽视但至关重要的环节是——如何让别人真正跑通你的代码。 我们都有过这样的经历:在论文或开源项目中看到一段惊艳的模型设计,兴致勃勃地克隆代码、安装…

作者头像 李华
网站建设 2026/4/16 7:35:20

2023柏鹫杯CTF PWN

2023柏鹫杯 eval 程序分析简单看一下发现是实现了一个计算器,主要内容实在sub_E50中,说实话看的时候挺迷的,主要是那个存放数据的结构体没看懂啥规律,后来参看的别人的思路,就是硬调试漏洞其实不是很难找到&#xff0c…

作者头像 李华