3.1 KiB
3.1 KiB
author, date, category, tags
author | date | category | tags | ||||
---|---|---|---|---|---|---|---|
deng | 20250103 | Note |
|
- Abstract
- 將辛辛苦苦寫出來的python專案打包發布至你想發布的地方!
- Concept
- 工作分成兩階段
- 將原始碼封裝成whl檔,稱為build,常見的build engine有setuptools或是hatchling
- 將whl檔發佈(不管是公開的PyPI還是私人的pip server),可透過twine進行發佈
- 工作分成兩階段
- Steps
- 在Python環境中安裝setuptools及twine(也可以使用其他build engine)
- 依據官方文件改造你的專案結構,並添加LICENSE、README.md與pyproject.toml檔案
- 依據需求填寫上述三檔案,pyproject.toml內容可參考Note最後之範例程式碼
- 執行
python -m build
指令建立whl檔案,該檔將會生成於dist資料夾中 - 執行
twine upload dist/*
將專案上傳至PyPI(需事先申請帳號),或者先上傳至TestPyPI進行測試(同樣地也需要事先申請帳號哦)
- Note
# pyproject.toml
#
# author: deng
# date : 20250103
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools.package-data]
"PlayYourHeart.data" = ["*.csv"]
# this can package additional data in project
[project]
name = "PlayYourHeart"
version = "0.1.0"
authors = [
{ name="deng", email="gt810034@gmail.com" },
]
maintainers = [
{ name="deng", email="gt810034@gmail.com" },
]
description = "Let's enjoy."
readme = "README.md"
license = {file = "LICENSE"}
dependencies = [
"numpy~=1.26.4",
"scipy~=1.14.1",
...
]
requires-python = "==3.10.*"
classifiers = [
"Programming Language :: Python :: 3",
"Operating System :: Unix"
]
[project.optional-dependencies]
dev = [
"pytest",
"flake8",
"pre-commit"
]
# use "pip install xxx.whl[dev]" to install them
[project.urls]
Gitlab = "..."