Python進行項目打包的完整流程
前言
在 Python 開發(fā)日常工作中,直接傳輸源碼文件共享項目,這種方式不僅雜亂無章,還難以管理版本、依賴和更新。借助 Python 官方內置的setuptools工具,就能快速將普通腳本、項目模塊打包成標準可安裝包,支持本地 pip 安裝、團隊內網(wǎng)分發(fā),也能為后續(xù)上傳 PyPI 開源發(fā)布打好基礎。
一、環(huán)境準備
確保基礎依賴工具為最新版本,避免打包報錯:
# 升級打包核心工具 pip install --upgrade setuptools # 安裝wheel,用于生成二進制wheel包 pip install wheel
推薦 Python 3.6 及以上版本,兼容主流開發(fā)環(huán)境。
二、單文件模塊快速打包
適合僅有單個 Python 腳本、功能簡單的小工具,無需復雜目錄結構。
1. 項目目錄結構
極簡結構僅需兩個文件:
simple_module_proj/ ├── setup.py # 打包配置核心文件 └── demo_func.py # 業(yè)務功能代碼
2. 編寫業(yè)務代碼 demo
def calculate_sum(a, b):
"""簡單求和工具函數(shù)"""
return a + b
3. 編寫極簡打包配置
setuptools的核心配置文件,聲明包名和關聯(lián)模塊:
from setuptools import setup
setup(
name="demo_func", # pip安裝時的包名
py_modules=["demo_func"] # 關聯(lián)本地py文件名,無需帶后綴
)
4. 本地直接 pip 安裝測試
進入項目上級目錄,執(zhí)行本地安裝命令:
pip install ./simple_module_proj/
安裝成功后,可在任意 Python 環(huán)境中直接導入使用:
from demo_func import calculate_sum print(calculate_sum(10, 20)) # 輸出30
三、標準包結構打包
實際開發(fā)中多為多文件、多模塊項目,采用src 源碼目錄規(guī)范結構,結構清晰、便于維護和擴展。
1. 標準項目目錄結構
standard_package_proj/ ├── src/ │ └── mytool/ # 包名,導入時使用 │ ├── __init__.py # 標識為Python包 │ └── core.py # 核心業(yè)務模塊 ├── setup.py # 打包配置 ├── README.md # 項目說明文檔 ├── LICENSE # 開源許可文件 └── CHANGELOG.md # 版本變更日志
2. 編寫核心業(yè)務代碼
def get_version():
"""獲取工具版本號"""
return "1.0.0"
def print_info():
print("Python打包測試工具")
3. 配置init.py 暴露接口
通過該文件簡化外部導入方式,直接暴露模塊函數(shù):
# src/mytool/__init__.py from .core import get_version, print_info
配置后可直接通過包名調用函數(shù),無需嵌套模塊層級。
4. 完善完整版
相比極簡版,補充版本、作者、描述、倉庫地址等完整信息,消除打包警告,滿足規(guī)范發(fā)布要求:
from setuptools import setup, find_packages
setup(
name="mytool",
version="1.0.0",
description="Python標準化打包示例工具",
author="開發(fā)作者",
author_email="xxx@xxx.com",
url="https://github.com/xxx/mytool", # 項目倉庫地址
# 自動掃描src下所有包
packages=find_packages(where="src"),
package_dir={"": "src"}, # 指定源碼根目錄為src
python_requires=">=3.6" # 限制Python最低版本
)
5. 補充配套規(guī)范文件
- README.md:編寫項目簡介、安裝方式、使用示例,提升可讀性;
- LICENSE:添加 MIT、Apache 等開源許可協(xié)議,明確使用權限;
- CHANGELOG.md:記錄每個版本的新增功能、修復 bug、功能變更,方便版本追溯。
四、生成源碼包與 Wheel 安裝包
完成項目配置后,執(zhí)行一條命令即可同時生成兩種標準安裝包:
python setup.py sdist bdist_wheel
1. 打包產(chǎn)物說明
執(zhí)行完畢后,項目根目錄會生成dist文件夾,內含兩類文件:
.tar.gz:源碼分發(fā)包,跨平臺通用,安裝時會現(xiàn)場編譯;.whl:Wheel 二進制包,安裝速度更快,pip 優(yōu)先選擇該格式安裝。
2. 消除打包警告
若打包時提示缺少 README、許可信息等警告,只需補齊上文提到的README.md、LICENSE文件,并完善 setup.py 基礎信息,重新打包即可無警告生成安裝包。
五、本地離線批量安裝包
適合無外網(wǎng)的內網(wǎng)服務器、團隊本地共享場景,可批量存放安裝包并離線安裝。
1. 整理安裝包
在項目內新建packages文件夾,將dist目錄下的.whl和.tar.gz文件復制進去:
# Windows示例 mkdir packages copy dist\* packages\
2. 離線安裝命令
不依賴外網(wǎng) PyPI 源,從本地目錄查找并安裝:
# 安裝最新版本 pip install --no-index --find-links=./packages mytool # 指定安裝特定版本 pip install --no-index --find-links=./packages mytool==1.0.0
安裝后全局環(huán)境即可永久使用該包,和從 PyPI 在線安裝體驗完全一致。
六、發(fā)布到 PyPI 開源
若需要將項目開源,供全網(wǎng)開發(fā)者通過 pip 直接安裝,只需兩步:
- 安裝上傳工具
twine:pip install twine; - 配置 PyPI 賬號,通過 twine 將
dist下的包文件上傳至 PyPI 官方倉庫。
后續(xù)即可直接執(zhí)行pip install mytool在線安裝開源項目。
到此這篇關于Python進行項目打包的完整流程的文章就介紹到這了,更多相關Python項目打包內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python實現(xiàn)將HTML表格一鍵導出為Excel(xlsx)的實戰(zhàn)指南
在數(shù)據(jù)采集、網(wǎng)頁解析或自動化報表場景中,我們經(jīng)常會遇到需要將HTML 頁面中提取的表格數(shù)據(jù)導出為Excel文件,下面我們就來看看如何使用Python實現(xiàn)這一功能吧2026-01-01
PyQt5中QSpinBox計數(shù)器的實現(xiàn)
這篇文章主要介紹了PyQt5中QSpinBox計數(shù)器的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01
使用PyInstaller將Python腳本打包成exe的新手入門指南
用 PyInstaller 打包成單個 exe 文件,雙擊就能運行,省心又專業(yè),本文從零開始手把手教你用 PyInstaller 打包 Python 程序,解決新手常遇到的坑,希望對大家有所幫助2026-03-03
Python簡單實現(xiàn)socket信息發(fā)送與監(jiān)聽功能示例
這篇文章主要介紹了Python簡單實現(xiàn)socket信息發(fā)送與監(jiān)聽功能,結合實例形式分析了Python基于socket構建客戶端與服務器端通信相關操作技巧,需要的朋友可以參考下2018-01-01
python將Dataframe格式的數(shù)據(jù)寫入opengauss數(shù)據(jù)庫并查詢
這篇文章主要介紹了python將Dataframe格式的數(shù)據(jù)寫入opengauss數(shù)據(jù)庫并查詢,文章介紹詳細具有一定的參考價值,希望對你的學習有所幫助2022-04-04

