Python之算法打包 后通过pip 安装调用

部署运行你感兴趣的模型镜像

Python之算法打包 后通过pip 安装调用

  • 一个可 pip 安装的包,本质上是一个包含了一些特定文件和目录结构的压缩包(.tar.gz 或 .whl)。pip 会从 PyPI(Python Package Index)或其他源找到这个压缩包,下载并安装它。

  • 你的任务就是创建这个结构正确的“压缩包”。

第一步:项目结构标准化

首先,将你的代码组织成标准的结构。假设你的项目名叫 mybag,一个推荐的结构如下:

mybag-project/          # 项目根目录(你可以任意命名,但这不重要)
├── src/                # src目录是标准做法,用于存放包源码
│   └── mybag/          # 这个目录名必须和你的包名一致(即将被pip安装的)
│       ├── __init__.py # 这是一个空文件,告诉Python这是一个包
│       ├── main_module.py # 你的主模块代码
│       └── ...         # 其他模块、子包等
├── tests/              # 你的测试文件(可选但推荐)
├── docs/               # 你的文档(可选)
├── requirements.txt    # 项目依赖列表
├── pyproject.toml      # 【现代方式】最重要的文件,构建系统的配置
└── README.md           # 项目说明

关键点

  • src 布局: 使用 src 目录是一种最佳实践,它可以避免很多在测试和开发时遇到的导入路径问题。

  • 包目录: src/mybag/ 这个目录的名字 mybag 才是用户 import mybag 时真正的包名。

  • __init__.py: 必须存在,可以是空的,也可以在里面写一些初始化代码或定义 __version__

现在你需要做的是:
将你的主要源码(封装好的接口等)移动到 src/mybag/ 目录下。你的虚拟环境 不需要 被打包进去。

第二步:创建 pyproject.toml 文件(核心!)

  • 这是现代 Python 打包的配置文件,它取代了旧的 setup.py 和 setup.cfg。在项目根目录创建这个文件。

  • 一个最基础的 pyproject.toml 示例:

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

[project]
name = "mybag"
version = "0.1.0"  # 遵循语义化版本号,如 1.0.0, 1.0.1, 1.1.0
description = "A fantastic image matching library"
readme = "README.md"
requires-python = ">=3.8"  # 指定你的代码支持的Python版本
license = { file = "LICENSE" }  # 确保你有一个许可证文件
authors = [
  { name="Your Name", email="your.email@example.com" },
]
keywords = ["image", "matching", "computer-vision"]
classifiers = [
  "License :: OSI Approved :: MIT License",
  "Programming Language :: Python :: 3",
  "Operating System :: OS Independent",
]
dependencies = [
  "opencv-python>=4.5.0",
  "numpy>=1.21.0",
  "torch>=1.9.0",
  # 将你虚拟环境中的依赖(pip list)全部写在这里!
  # 不要直接复制requirements.txt,要手动列在这里。
]

[project.urls]
Homepage = "https://github.com/yourusername/mybag"

[tool.setuptools]
package-dir = { "" = "src" }  # 告诉setuptools包在src目录下

关键点:

  • dependencies: 这是最重要的部分!你需要将你虚拟环境里所有的核心依赖(通过 pip list 查看)都列在这里。当用户 pip install mybag 时,这些依赖会被自动安装。
    注意: 只添加项目运行所必须的依赖,开发工具(如 black, pytest)不要写在这里。

  • requires-python: 务必设置正确。

  • package-dir: 因为我们使用了 src 布局,所以需要这行配置来指明包的位置。

(传统方式:setup.py)
虽然现在推荐使用 pyproject.toml,但了解 setup.py 也有帮助。如果你看到旧教程,它们会用这个。现代工具如 build 和 pip 都能理解 pyproject.toml。

第三步:编写必要的辅助文件

  • README.md: 用 Markdown 编写项目的详细说明,包括功能、安装方法、快速使用示例等。

  • LICENSE: 选择一个开源许可证(如 MIT, Apache等),将许可证文本复制到一个名为 LICENSE 的文件中。如果不加许可证,默认情况下他人无权使用你的代码。

第四步:构建分发包

  • 在项目根目录下,打开终端/命令行。

  • 安装最新版的构建工具:

pip install --upgrade build
  • 执行构建命令:
python -m build

这个命令会读取你的 pyproject.toml,并在项目根目录下创建一个 dist/ 文件夹,里面包含两个文件:

mybag-0.1.0.tar.gz (源码归档)

mybag-0.1.0-py3-none-any.whl (编译好的发行版 wheel 文件)

第五步:分发和安装

  • 现在你有两种方式让别人安装你的包:

方法A:直接从本地文件安装(用于测试或私下分享)
你可以将整个项目文件夹(或者直接只是 dist 文件夹)发给别人,他们可以这样安装:

pip install /path/to/dist/mybag-0.1.0-py3-none-any.whl
# 或者
pip install /path/to/dist/mybag-0.1.0.tar.gz

在正式分享前,务必用这种方式先测试安装一次,确保一切正常!

方法B:上传到 PyPI(用于公开分享)
这样全世界的人都可以通过 pip install mybag 来安装。

1.注册 PyPI 账号:

  • 测试平台: https://test.pypi.org/

  • 正式平台: https://pypi.org/

2.安装上传工具:

pip install --upgrade twine

3.上传到测试平台(强烈建议先测试):

python -m twine upload --repository testpypi dist/*

你会被要求输入在 testpypi.org 注册的用户名和密码。

4.从测试平台安装测试:

pip install --index-url https://test.pypi.org/simple/ --no-deps mybag

5.测试成功后,上传到正式的 PyPI:

python -m twine upload dist/*

6.现在,任何人都可以安装了:


pip install mybag

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明月醉窗台

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值