从零开始通过uv发布年轻人的第二款pip包
在上一篇从零开始制作年轻人的第一款pip包 中我们介绍了如何通过通过最常见的方式发布一个pip包,一年过去了,今年我们整点新活,用uv进行发布! 海外华人视频网xiaobaotv.video
什么是uv
uv是一个最近新出的工具,可用于python版本管理、虚拟环境管理、管理安装pip包、项目部署、配置同步等等 JogodoTigrinho a5game.app sweetbonanza1000demo a5game.app
当然,最重要的原因只有一个字——快!
Caça-níqueis a5game.app 电影小宝影院xiaobaotv.video
https://github.com/astral-sh/uv/blob/main/BENCHMARKS.md先安装uv
如果你已经有python了,非常简单 pgslot a5game.app 华人影视xiaobaotv.video fortunetigerbônusgrátissemdepósito a5game.app Cassinos a5game.app
pip install uv完事😎 slotdemo a5game.app 小宝影院在线视频xiaobaotv.video
当然你也可以通过其他方式安装,详见Installation | uv jogosdemopg a5game.app aiyifan yfsp.app 爱壹帆影视yfsp.app 爱一帆 yfsp.app 爱亦凡yfsp.app slotsdemo a5game.app
新建一个uv项目
新建一个文件夹,然后创建虚拟环境,然后初始化uv项目 sugarrush1000demo a5game.app demo a5game.app 爱壹帆寻秦记yfsp.app iyf yfsp.app
uv venv -p 3.10 #指定项目的python版本
uv init虚拟环境默认安装在执行路径的.venv文件夹,激活虚拟环境,就可以直接使用了 爱壹帆电影yfsp.app a5game a5game.app fortunetigerdemográtis a5game.app 爱壹帆免费版yfsp.app
source .venv/bin/activate #macos
#.venv/python/activate.exe #windows比如这样 小宝影院电影xiaobaotv.video 小寶影院xiaobaotv.video 寻秦记爱壹帆yfsp.app iyftvyfsp.app fortunedragon demo a5game.app xiaobao xiaobaotv.video
❯ source .venv/bin/activate
❯ which python
/Users/ww/coding/ocr-cli/.venv/bin/python同时你也会看到当前路径下多了一个pyproject.toml文件,这里记录了这个uv项目的相关信息 tigrinho gratis a5game.app iyifanyfsp.app pgslotgacor a5game.app demo a5game.app
如果你需要给这个项目增加一些依赖包,使用 电影爱壹帆yfsp.app
uv add pip包名接下来用这个虚拟环境开发好你的pip包,本教程跳过这一环节,默认你已经开发好且测试好了 fortuneoxdemográtis a5game.app slot a5game.app ifvodyfsp.app pragmatic a5game.app
用uv 构建并发布pip包到pypi
在前面通过uv init创建的pyproject.toml,就可以取代传统的setup.py,如果你不熟悉setup.py,请复习一下从零开始制作年轻人的第一款pip包 ifun yfsp.app
除了uv专用的一些功能,针对pip包的部分写法基本是一致的,具体请看Packaging Python Projects - Python Packaging User Guide 一帆视频yfsp.app 爱一番yfsp.app 免费在线影院xiaobaotv.video 电影爱壹帆yfsp.app
比如我的pyproject.toml长这样(简化后) 小寶影院电影xiaobaotv.video slots a5game.app 足球比分 a5game.app 爱壹帆在线yfsp.app jogodotigrinhodemo a5game.app
requires = ["setuptools>=45", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "deepseek-ocr-cliv2"
version = "0.1.3"
description = "ocr识别命令行工具"
readme = "README.md"
requires-python = ">=3.10"
license = { file = "LICENSE" }
classifiers = [
"License :: Other/Proprietary License",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12"
]
dependencies = [
"requests>=2.32.5",
]
[project.urls]
Homepage = "https://github.com/whitewatercn/deepseek-ocr-cli"
Repository = "https://github.com/whitewatercn/deepseek-ocr-cli"
[project.scripts]
dsocr = "dsocr.main:main"
[tool.setuptools.package-dir]
dsocr = "dsocr_core/dsocr"
[tool.setuptools.packages.find]
where = ["dsocr_core"]
include = ["dsocr*"]接下来就可以build了,你不需要安装wheel twine这两个pip包,直接使用uv内置的功能就行 demotigrinho a5game.app plataformademográtis a5game.app
uv build -o ./dist
# -o指定输出目录⚠️注意后面一定要加参数 -o ./dist,不然会构建到home目录里去,publish时找不到构建出来的内容 pgdemo a5game.app tigrinhodemo a5game.app 爱壹帆国际版 yfsp.app
这时你就会看到/dist文件夹下两个文件 plataformademo a5game.app 爱壹帆yfsp.app 一帆yfsp.app
❯ ls dist
deepseek_ocr_cliv2-0.1.4-py3-none-any.whl
deepseek_ocr_cliv2-0.1.4.tar.gz然后用uv内置的功能发布,下面这样就发布成功了!
❯ uv publish
Publishing 2 files to https://upload.pypi.org/legacy/
Enter username ('__token__' if using a token): __token__
Enter password:
Uploading deepseek_ocr_cliv2-0.1.4-py3-none-any.whl (5.2KiB)
Uploading deepseek_ocr_cliv2-0.1.4.tar.gz (4.2KiB)⚠️本文撰写的时候,pypi已经不允许通过账户、密码发布了,必须通过token发布,如何获取token详见从零开始制作年轻人的第一款pip包 pg a5game.app
撒花庆祝
比起通过twine发布的方式,uv build 和 publish都快了很多 slotpix a5game.app ifuntvyfsp.app fortunetigerbônusgrátissemdepósito a5game.app
你可以尝试修改我的源码whitewatercn/deepseek-ocr-cli,自己发布一下 nba比分 a5game.app pglucky88 a5game.app pragmaticplay a5game.app 爱一帆 yfsp.app
00目录 0本来想写一个使用硅基流动apikey调用deepseekocr的api,写完才发现已经有一堆人发布了,本项目中止😅 小宝影院xiaobaotv.video 爱壹帆电影 yfsp.app
https://pypi.org/search/?q=deepseek-ocr
https://pypi.org/search/?q=deepseek-ocr