news 2026/4/18 8:04:08

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/6 10:20:42

黑客入门必修课:密码爆破漏洞全攻略(强烈建议收藏)

前言:第一次用 Hydra 爆破出 SSH 密码时,我懂了 “入门不代表简单” 三年前,我还是个刚接触网络安全的小白,对着 Kali Linux 的终端发呆 —— 听说 “密码爆破” 是黑客入门第一课,可当我第一次输入hydra命令时&#…

作者头像 李华
网站建设 2026/4/17 13:03:28

GPU算力按小时计费 vs Token计费哪种更划算?

GPU算力按小时计费 vs Token计费:哪种更划算? 在AI应用快速落地的今天,一个现实问题摆在开发者面前:到底是租一台GPU服务器自己跑模型,还是直接调用大模型API按次付费?这个问题背后,其实是一场关…

作者头像 李华
网站建设 2026/4/18 7:01:13

AI for Science技术解析:从方法论到前沿应用的全视角洞察

目录 一、AI for Science:定义与科研范式革新(一)核心概念与技术定位(二)技术演进与关键里程碑 二、核心技术体系与方法论解析(一)基础算法框架与领域适配1. 深度学习模型家族2. 生成式 AI 与逆…

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

Pip install --user与virtualenv的区别

Pip install –user 与 virtualenv 的本质区别:从 AI 开发实践看 Python 依赖管理 在一台 GPU 服务器上,三位研究员同时跑着不同的深度学习实验——一个用 PyTorch 1.12 做图像分割,一个基于 PyTorch 2.0 实现新论文模型,另一个则…

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

‌测试架构师:构建质量体系的领航者

在快速迭代的软件开发世界中,质量保障(QA)不再是简单的缺陷检测,而是驱动业务成功的核心引擎。作为这一变革的领航者,测试架构师(Test Architect)正从幕后走向台前,肩负起构建高效质…

作者头像 李华