Python將源碼打包成.whl文件的完整指南
Python 項(xiàng)目開發(fā)完成后,如何優(yōu)雅地發(fā)布和安裝?傳統(tǒng)的 python setup.py install 雖然可用,但不夠現(xiàn)代化,也不方便在不同環(huán)境中快速分發(fā)。今天,我們就來詳細(xì)講解如何將 Python 源碼打包成 .whl 文件(Wheel),并進(jìn)行安裝和分發(fā)。
一、為什么選擇 .whl 文件
.whl 是 Python 官方推薦的二進(jìn)制分發(fā)格式,相比傳統(tǒng)的源碼安裝有幾個優(yōu)勢:
- 快速安裝:不需要編譯,直接
pip install xxx.whl - 跨平臺(純 Python):如果沒有 C 擴(kuò)展,可以在不同操作系統(tǒng)間通用
- 規(guī)范標(biāo)準(zhǔn):兼容現(xiàn)代 Python 打包工具,如
pip和build - 可控依賴:打包時可以指定依賴,安裝時自動拉取
二、項(xiàng)目結(jié)構(gòu)準(zhǔn)備
假設(shè)你的項(xiàng)目名稱是 mypkg,最基礎(chǔ)的目錄結(jié)構(gòu)如下:
mypkg/
├── mypkg/
│ ├── __init__.py
│ └── core.py
├── README.md
├── setup.py # 傳統(tǒng)方式
└── pyproject.toml # 現(xiàn)代方式推薦
mypkg/:核心代碼setup.py:兼容老項(xiàng)目的打包配置pyproject.toml:現(xiàn)代標(biāo)準(zhǔn)的打包配置
三、現(xiàn)代方式:pyproject.toml 打包
Python 官方推薦使用 PEP 517/518 標(biāo)準(zhǔn),通過 pyproject.toml 來描述構(gòu)建和依賴信息。
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. 構(gòu)建.whl文件
在項(xiàng)目根目錄執(zhí)行:
python -m build
生成結(jié)果在 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
四、傳統(tǒng)方式:setup.py打包
對于老項(xiàng)目,如果還在用 setup.py,也可以生成 .whl:
# setup.py
from setuptools import setup, find_packages
setup(
name="mypkg",
version="0.1.0",
packages=find_packages(),
install_requires=[],
)
構(gòu)建:
python setup.py bdist_wheel
生成的 .whl 文件同樣在 dist/ 目錄。
五、源碼保護(hù)與加密(可選)
.whl 文件本質(zhì)上仍然包含源碼,如果想防止直接查看 Python 代碼,可以考慮:
方案 1:Cython 編譯
.py → .pyx → .so / .pyd → 打包成 whl
適合核心邏輯不想暴露的商業(yè)項(xiàng)目。
方案 2:PyArmor 混淆
pip install pyarmor pyarmor gen mypkg/
可以對源碼進(jìn)行混淆,提高反編譯成本。
六、總結(jié)
.whl是現(xiàn)代 Python 項(xiàng)目的推薦分發(fā)格式- 現(xiàn)代方式使用
pyproject.toml+build,簡單快捷 - 傳統(tǒng)方式
setup.py依然可用 - 可選混淆/編譯策略保護(hù)核心源碼
通過打包成 .whl,你可以方便地分發(fā)、安裝和管理 Python 項(xiàng)目,讓用戶體驗(yàn)更流暢,也方便 CI/CD 自動化部署。
到此這篇關(guān)于Python將源碼打包成.whl文件的完整指南的文章就介紹到這了,更多相關(guān)Python源碼打包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python爬蟲實(shí)戰(zhàn)之爬取某寶男裝信息
網(wǎng)絡(luò)爬蟲是一種按照一定的規(guī)則自動瀏覽、檢索網(wǎng)頁信息的程序或者腳本。網(wǎng)絡(luò)爬蟲能夠自動請求網(wǎng)頁,并將所需要的數(shù)據(jù)抓取下來。本文將為大家介紹如何利用爬蟲獲取某寶男裝信息,感興趣的小伙伴可以了解一下2021-12-12
如何使用python3獲取當(dāng)前路徑及os.path.dirname的使用
這篇文章主要介紹了如何使用python3獲取當(dāng)前路徑及os.path.dirname的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12
python實(shí)現(xiàn)統(tǒng)計(jì)代碼行數(shù)的方法
這篇文章主要介紹了python實(shí)現(xiàn)統(tǒng)計(jì)代碼行數(shù)的方法,涉及Python中os模塊及codecs模塊的相關(guān)使用技巧,需要的朋友可以參考下2015-05-05

