Python-Poetry 项目中的仓库管理详解

Python-Poetry 项目中的仓库管理详解

poetry 简化Python包的打包与依赖关系管理工作而设计的一种解决方案或工具 poetry 项目地址: https://gitcode.com/gh_mirrors/po/poetry

前言

Python-Poetry 是一个现代化的 Python 依赖管理和打包工具,它提供了强大的仓库管理功能。本文将深入探讨 Poetry 中的仓库配置和使用方法,帮助开发者更好地管理项目依赖。

仓库类型概述

Poetry 支持多种类型的仓库,主要分为两大类:

  1. 包源仓库:用于获取项目依赖
  2. 发布仓库:用于发布项目包

包源仓库配置

默认配置

Poetry 默认使用 PyPI 作为包源仓库。当您添加依赖时,Poetry 会默认从 PyPI 查找这些包。

私有仓库配置

添加私有仓库源

要为项目添加私有仓库源,可以使用以下命令:

poetry source add foo https://pypi.example.org/simple/

这会在项目的 pyproject.toml 中添加如下配置:

[[tool.poetry.source]]
name = "foo"
url = "https://foo.bar/simple/"
priority = "primary"
认证配置

如果私有仓库需要认证,可以配置凭据:

poetry config http-basic.foo <用户名> <密码>

安全提示:某些系统可能会将密码保存在命令行历史中,建议在命令前添加空格以避免历史记录。

优先级分类

Poetry 1.5.0 引入了包源优先级概念:

  1. 主要源 (primary):默认类型,会禁用隐式 PyPI 源
  2. 补充源 (supplemental):仅当主要源找不到包时才会查询
  3. 显式源 (explicit):仅当依赖明确指定时才查询
主要源示例
poetry source add --priority=primary foo https://foo.bar/simple/
补充源示例
poetry source add --priority=supplemental foo https://foo.bar/simple/
显式源示例
poetry source add --priority=explicit pytorch-gpu-src https://download.pytorch.org/whl/cu118

包源约束

可以为特定包指定源:

poetry add --source foo private-package

这会在 pyproject.toml 中生成:

[tool.poetry.dependencies]
private-package = { version = "^1.0", source = "foo" }

支持的包源类型

1. PyPI (Python Package Index)

Poetry 通过 JSON API 与 PyPI 交互,获取包的版本、元数据等信息。

2. 简单 API 仓库

支持符合 PEP 503 标准的简单仓库:

poetry source add testpypi https://test.pypi.org/simple/

注意:URL 必须以 /simple/ 结尾。

3. 单页链接源 (1.2.0+)

支持部分遵循 PEP 503 结构的单页链接:

poetry source add jax https://storage.googleapis.com/jax-releases/jax_releases.html

发布仓库配置

发布仓库是用户特定的配置,不同于项目特定的包源。Poetry 目前仅支持传统上传 API。

配置发布仓库

poetry config repositories.foo https://pypi.example.org/legacy/

发布项目

poetry publish --build --repository foo

认证管理

基本认证

poetry config http-basic.foo <用户名> <密码>

API 令牌

推荐使用 API 令牌而非密码:

poetry config pypi-token.pypi <我的令牌>

环境变量方式

export POETRY_HTTP_BASIC_FOO_USERNAME=<用户名>
export POETRY_HTTP_BASIC_FOO_PASSWORD=<密码>

密钥环支持

Poetry 支持使用系统密钥环存储凭据。如需禁用:

poetry config keyring.enabled false

最佳实践

  1. 为私有包明确指定源约束
  2. 使用 API 令牌而非密码
  3. 考虑使用补充源优化解析速度
  4. 对关键依赖使用显式源

总结

Python-Poetry 提供了灵活的仓库管理方案,支持多种仓库类型和优先级配置。通过合理使用这些功能,开发者可以高效地管理项目依赖,无论是公共包还是私有包。

记住,包源配置是 Poetry 特有的功能,在使用其他工具(如 pip)安装项目时不会被考虑。

poetry 简化Python包的打包与依赖关系管理工作而设计的一种解决方案或工具 poetry 项目地址: https://gitcode.com/gh_mirrors/po/poetry

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

资源下载链接为: https://pan.quark.cn/s/5c50e6120579 在Android移动应用开发中,定位功能扮演着极为关键的角色,尤其是在提供导航、本地搜索等服务时,它能够帮助应用获取用户的位置信息。以“baiduGPS.rar”为例,这是一个基于百度地图API实现定位功能的示例项目,旨在展示如何在Android应用中集成百度地图的GPS定位服务。以下是对该技术的详细阐述。 百度地图API简介 百度地图API是由百度提供的一系列开放接口,开发者可以利用这些接口将百度地图的功能集成到自己的应用中,涵盖地图展示、定位、路径规划等多个方面。借助它,开发者能够开发出满足不同业务需求的定制化地图应用。 Android定位方式 Android系统支持多种定位方式,包括GPS(全球定位系统)和网络定位(通过Wi-Fi及移动网络)。开发者可以根据应用的具体需求选择合适的定位方法。在本示例中,主要采用GPS实现高精度定位。 权限声明 在Android应用中使用定位功能前,必须在Manifest.xml文件中声明相关权限。例如,添加<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />,以获取用户的精确位置信息。 百度地图SDK初始化 集成百度地图API时,需要在应用启动时初始化地图SDK。通常在Application类或Activity的onCreate()方法中调用BMapManager.init(),并设置回调监听器以处理初始化结果。 MapView的创建 在布局文件中添加MapView组件,它是地图显示的基础。通过设置其属性(如mapType、zoomLevel等),可以控制地图的显示效果。 定位服务的管理 使用百度地图API的LocationClient类来管理定位服务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程倩星

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

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

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

打赏作者

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

抵扣说明:

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

余额充值