最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python構(gòu)建包打包.whl文件及使用.whl文件安裝包指南

 更新時(shí)間:2026年01月27日 11:42:21   作者:Tipriest_  
wheel(.whl)是Python的一種二進(jìn)制分發(fā)格式,用于方便地安裝Python軟件包,它是一種打包格式,其中包含了預(yù)編譯的二進(jìn)制文件、依賴關(guān)系和其他必要的文件,這篇文章主要介紹了Python構(gòu)建包打包.whl文件及使用.whl文件安裝包的相關(guān)資料,需要的朋友可以參考下

下面用一個(gè)完整、可運(yùn)行的示例,從零開始演示:

  • 如何自己構(gòu)建一個(gè) Python 包
  • 如何打包成 .whl 文件
  • 如何用 .whl 文件安裝這個(gè)包

會(huì)覆蓋到常用的配置文件、目錄結(jié)構(gòu)和具體命令。

一、準(zhǔn)備一個(gè)最簡(jiǎn)單的包示例

假設(shè)我們要發(fā)布一個(gè)叫做 mypackage 的包,里面只有一個(gè)函數(shù):add(a, b),返回兩個(gè)數(shù)的和。

1. 創(chuàng)建項(xiàng)目目錄

在任意目錄下創(chuàng)建項(xiàng)目根目錄,例如:

mkdir mypackage-project
cd mypackage-project

項(xiàng)目最終結(jié)構(gòu)大致如下(先給一個(gè)概覽,后面逐個(gè)創(chuàng)建):

mypackage-project/
├─ src/
│  └─ mypackage/
│     ├─ __init__.py
│     └─ core.py
├─ tests/
│  └─ test_core.py            # 可選
├─ pyproject.toml
├─ README.md
└─ LICENSE                    # 可選

說(shuō)明:

  • 使用 src/ 目錄結(jié)構(gòu)是目前官方推薦的做法,能避免一些導(dǎo)入問(wèn)題。
  • mypackage 是發(fā)布后用戶 import 時(shí)用到的包名。

二、編寫包的源碼

1. 創(chuàng)建src/mypackage目錄

mkdir -p src/mypackage

2. 創(chuàng)建__init__.py

__init__.py 表示這是一個(gè)包,并且可以在這里定義對(duì)外暴露的接口。

src/mypackage/__init__.py

"""
mypackage
一個(gè)示例 Python 包,用于演示如何打包并生成 whl 文件。
"""
from .core import add
__all__ = ["add"]
__version__ = "0.1.0"

3. 創(chuàng)建核心模塊core.py

src/mypackage/core.py

def add(a: float, b: float) -> float:
    """返回兩個(gè)數(shù)字的和"""
    return a + b

三、配置打包:pyproject.toml

從 Python 3.8+ 開始,推薦使用 PEP 517/518pyproject.toml 來(lái)管理構(gòu)建配置,這也是目前最主流、官方推薦的方式,比老的 setup.py 更簡(jiǎn)單清晰。

在項(xiàng)目根目錄創(chuàng)建 pyproject.toml

[build-system]
# 指定構(gòu)建后端,常用的有 setuptools、hatchling、poetry 等
# 這里使用 setuptools 作為示例
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "mypackage"                # 包名(發(fā)布到 PyPI 時(shí)的名字)
version = "0.1.0"                 # 版本號(hào)
description = "A simple demo package for building wheel files."
readme = "README.md"              # 項(xiàng)目說(shuō)明文件
requires-python = ">=3.8"
license = {text = "MIT"}          # 簡(jiǎn)單寫法,也可以引用 LICENSE 文件

authors = [
  { name="Your Name", email="you@example.com" }
]

# 安裝此包時(shí)所需的依賴
dependencies = [
  # "requests>=2.0.0",  # 示例:如果你的包依賴 requests
]

# 給工具和用戶看的分類信息,可選
classifiers = [
  "Programming Language :: Python :: 3",
  "Programming Language :: Python :: 3 :: Only",
  "License :: OSI Approved :: MIT License",
  "Operating System :: OS Independent",
]

# 可選:項(xiàng)目主頁(yè)、代碼倉(cāng)庫(kù)等
[project.urls]
"Homepage" = "https://example.com/mypackage"
"Source" = "https://github.com/yourname/mypackage"

核心點(diǎn):

  • [build-system] 告訴 pip 等工具如何構(gòu)建你的包。
  • [project] 描述這個(gè)包的元數(shù)據(jù)(名字、版本號(hào)、依賴等)。

四、可選:README.md和LICENSE

在項(xiàng)目根目錄下創(chuàng)建一個(gè)簡(jiǎn)單的 README.md(安裝后在 PyPI 上會(huì)展示):

README.md

# mypackage
一個(gè)示例 Python 包,用于演示如何從零構(gòu)建并生成 `.whl` 文件。
## 安裝
```bash
pip install mypackage

五、使用

from mypackage import add

print(add(1, 2))  # 輸出: 3
許可證 `LICENSE` 可以寫常見的 MIT、Apache-2.0 等,這里略過(guò)內(nèi)容。
---
## 五、可選:添加簡(jiǎn)單測(cè)試
雖然不是構(gòu)建 whl 必需的,但建議有基本測(cè)試。
```bash
mkdir tests

tests/test_core.py

from mypackage import add

def test_add():
    assert add(1, 2) == 3
    assert add(-1, 1) == 0

可以用 pytest 來(lái)跑測(cè)試:

pip install pytest
pytest

六、構(gòu)建.whl文件

1. 安裝構(gòu)建工具

推薦使用 build(官方推薦構(gòu)建前端):

pip install build

2. 在項(xiàng)目根目錄執(zhí)行構(gòu)建命令

確保當(dāng)前路徑是 mypackage-project 的根目錄(和 pyproject.toml 同級(jí)):

python -m build

執(zhí)行成功后,你會(huì)看到類似輸出,并在項(xiàng)目目錄下生成兩個(gè)目錄:

dist/
    mypackage-0.1.0-py3-none-any.whl
    mypackage-0.1.0.tar.gz

其中:

  • .whl 是你想要的 “輪子” 文件(wheel)
  • .tar.gz 是源碼包(source distribution)

如果只想生成 wheel,可以:

python -m build --wheel

七、使用.whl文件安裝包

1. 在本機(jī)安裝

假設(shè)當(dāng)前仍在 mypackage-project 目錄下:

pip install dist/mypackage-0.1.0-py3-none-any.whl

安裝后可以在任意地方使用:

>>> from mypackage import add
>>> add(2, 5)
7

2. 在另一臺(tái)機(jī)器或離線環(huán)境安裝

只需要把 dist/mypackage-0.1.0-py3-none-any.whl 拷貝到目標(biāo)機(jī)器上,然后執(zhí)行:

pip install mypackage-0.1.0-py3-none-any.whl

不需要源代碼,也不需要聯(lián)網(wǎng)(前提是你的包沒(méi)有需要在線安裝的新依賴,或者依賴也通過(guò) whl 提前準(zhǔn)備好)。

八、常見配置文件和寫法匯總

1. 必需文件(最簡(jiǎn))

  • pyproject.toml
  • src/mypackage/__init__.py
  • 你的實(shí)際代碼文件(如 src/mypackage/core.py

2. 推薦增加的文件

  • README.md
  • LICENSE
  • tests/ 目錄(配合 pytest)

3.pyproject.toml常見字段說(shuō)明(Setuptools 方式)

[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "mypackage"
version = "0.1.0"
description = "..."
readme = "README.md"
requires-python = ">=3.8"
license = {text = "MIT"}

authors = [
  { name="Your Name", email="you@example.com" }
]

dependencies = [
  "requests>=2.0.0",
  "numpy>=1.24",
]

classifiers = [
  "Programming Language :: Python :: 3",
  "License :: OSI Approved :: MIT License",
]

[project.urls]
"Homepage" = "..."
"Source" = "..."
"Bug Tracker" = "..."

九、補(bǔ)充:使用傳統(tǒng)setup.py的方式(可選了解)

雖然現(xiàn)在更推薦 pyproject.toml,但很多老項(xiàng)目仍在用 setup.py。

如果你想了解一下傳統(tǒng)方式,可以這樣:

1. 創(chuàng)建setup.py

在項(xiàng)目根目錄創(chuàng)建 setup.py

from setuptools import setup, find_packages

setup(
    name="mypackage",
    version="0.1.0",
    description="A simple demo package for building wheel files.",
    author="Your Name",
    author_email="you@example.com",
    packages=find_packages(where="src"),
    package_dir={"": "src"},
    python_requires=">=3.8",
    install_requires=[
        # "requests>=2.0.0",
    ],
)

2. 構(gòu)建 whl

pip install wheel setuptools
python setup.py bdist_wheel

會(huì)在 dist/ 下生成 .whl 文件,同樣可以用 pip install 安裝。

注意:
新項(xiàng)目?jī)?yōu)先用 pyproject.tomlsetup.py 更適合作為兼容舊項(xiàng)目的方式。

十、完整示例小結(jié)

  1. 創(chuàng)建目錄結(jié)構(gòu):
mypackage-project/
├─ src/
│  └─ mypackage/
│     ├─ __init__.py
│     └─ core.py
├─ pyproject.toml
├─ README.md
└─ tests/...
  1. pyproject.toml 用 setuptools 作為構(gòu)建后端
  2. 寫好代碼和 __init__.py
  3. 安裝構(gòu)建工具:pip install build
  4. 在項(xiàng)目根執(zhí)行:python -m build --wheel
  5. dist/ 中得到 .whl 文件
  6. 使用 pip install dist/xxx.whl 安裝使用

總結(jié) 

到此這篇關(guān)于Python構(gòu)建包打包.whl文件及使用.whl文件安裝包的文章就介紹到這了,更多相關(guān)Python打包.whl文件及使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python的描述器descriptor詳解

    python的描述器descriptor詳解

    這篇文章主要介紹了python的描述器descriptor詳解,描述器可以用于控制屬性的讀取、寫入和刪除等操作,同時(shí)還可以用于實(shí)現(xiàn)計(jì)算屬性、類屬性、屬性別名等高級(jí)功能,需要的朋友可以參考下
    2023-07-07
  • python 如何在 Matplotlib 中繪制垂直線

    python 如何在 Matplotlib 中繪制垂直線

    這篇文章主要介紹了python 如何在 Matplotlib 中繪制垂直線,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • Python連接數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)查詢的操作代碼

    Python連接數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)查詢的操作代碼

    這篇文章主要介紹了Python連接數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)查詢的操作代碼,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • Python機(jī)器學(xué)習(xí)入門(二)之Python數(shù)據(jù)理解

    Python機(jī)器學(xué)習(xí)入門(二)之Python數(shù)據(jù)理解

    這篇文章主要介紹了Python機(jī)器學(xué)習(xí)入門知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • python將圖片透明背景轉(zhuǎn)為白色背景的兩種方法

    python將圖片透明背景轉(zhuǎn)為白色背景的兩種方法

    這篇文章主要為大家詳細(xì)介紹了python如何使用opencv2和PIL實(shí)現(xiàn)將圖片透明背景轉(zhuǎn)換成白色背景功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-05-05
  • 詳解Python調(diào)用華為API實(shí)現(xiàn)圖像標(biāo)簽

    詳解Python調(diào)用華為API實(shí)現(xiàn)圖像標(biāo)簽

    華為云圖像標(biāo)簽可識(shí)別上千種通用物體以及數(shù)百種場(chǎng)景標(biāo)簽,一個(gè)圖像可包含多個(gè)標(biāo)簽內(nèi)容,語(yǔ)義內(nèi)容非常豐富。本文將通過(guò)Python調(diào)用華為API實(shí)現(xiàn)圖像標(biāo)簽,需要的可以參考一下
    2022-04-04
  • Python利用Flask-Mail實(shí)現(xiàn)發(fā)送郵件詳解

    Python利用Flask-Mail實(shí)現(xiàn)發(fā)送郵件詳解

    Flask?的擴(kuò)展包?Flask?-?Mail?通過(guò)包裝了?Python?內(nèi)置的smtplib包,可以用在?Flask?程序中發(fā)送郵件。本文將利用這特性實(shí)現(xiàn)郵件發(fā)送功能,感興趣的可以了解一下
    2022-08-08
  • selenium自動(dòng)化測(cè)試簡(jiǎn)單準(zhǔn)備

    selenium自動(dòng)化測(cè)試簡(jiǎn)單準(zhǔn)備

    本文主要介紹了selenium自動(dòng)化測(cè)試簡(jiǎn)單準(zhǔn)備,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Python繪圖模塊?turtle案例代碼

    Python繪圖模塊?turtle案例代碼

    turtle庫(kù)是Python語(yǔ)言中一個(gè)很流行的繪制圖像的函數(shù)庫(kù),想象一個(gè)小烏龜,在一個(gè)橫軸為x、縱軸為y的坐標(biāo)系原點(diǎn),(0,0)開始,它根據(jù)一組函數(shù)指令的控制,在這個(gè)平面坐標(biāo)系中移動(dòng),從而在它爬行的路徑上繪制了圖形,本文介紹Python繪圖模塊turtle,感興趣的朋友一起看看吧
    2023-01-01
  • Python爬蟲爬取愛奇藝電影片庫(kù)首頁(yè)的實(shí)例代碼

    Python爬蟲爬取愛奇藝電影片庫(kù)首頁(yè)的實(shí)例代碼

    這篇文章主要介紹了Python爬蟲爬取愛奇藝電影片庫(kù)首頁(yè)的實(shí)例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05

最新評(píng)論

游戏| 灯塔市| 石门县| 土默特右旗| 开封县| 濉溪县| 扎赉特旗| 长子县| 四平市| 柘荣县| 济宁市| 冷水江市| 邹城市| 彩票| 桑植县| 天津市| 阳曲县| 太白县| 马龙县| 晋江市| 张家港市| 庆阳市| 兴化市| 绵竹市| 卢龙县| 巴彦淖尔市| 德钦县| 鹤峰县| 随州市| 若尔盖县| 汽车| 惠安县| 锡林郭勒盟| 安图县| 如皋市| 杨浦区| 平江县| 肥西县| 金秀| 岱山县| 烟台市|