Python依赖管理及打包工具Poetry使用规范

 更新时间:2021年09月29日 11:17:00   作者:小菠萝测试笔记  
这篇文章主要为大家介绍了Python依赖管理及打包工具Poetry的依赖规范,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步

啥是依赖规范

可以以各种形式指定项目的依赖项,取决于依赖项的类型以及安装项目可能需要的可选约束

版本约束

^ 约束

编写规范 允许的版本范围
^1.2.3 >=1.2.3 <2.0.0
^1.2 >=1.2.0 <2.0.0
^1 >=1.0.0 <2.0.0
^0.2.3 >=0.2.3 <0.3.0
^0.0.3 >=0.0.3 <0.0.4
^0.0 >=0.0.0 <0.1.0
^0 >=0.0.0 <1.0.0
  • 当最左边的数字为非 0,则以左一数字为主版本号,比如:^2.13.0,可以取 2.14.0,但不能取 3.0.0,因为主版本号已经变了
  • 如果左一的数字为 0,则以左二的数字为主版本号,比如:^0.1.0  可以取 0.1.1、0.1.19,但不能取 0.2.0,因为主版本号已经变了

~ 约束

编写规范 允许的版本范围
~1.2.3 >=1.2.3 <1.3.0
~1.2 >=1.2.0 <1.3.0
~1 >=1.0.0 <2.0.0

和上面的 ^ 差不多,不过这个是次要版本,以第二个数字为基准

* 约束

有点像万能匹配符,写在哪里都可以

编写规范 允许的版本范围
* >=0.0.0
1.* >=1.0.0 <2.0.0
1.2.* >=1.2.0 <1.3.0

比较符

就常规的>、< 符号了

>= 1.2.0
> 1
< 2
!= 1.2.3

确定的版本号或范围

>= 1.2,< 1.5

git 依赖

可以指定依赖项的 git 仓库地址

[tool.poetry.dependencies]
requests = { git = "https://github.com/requests/requests.git" }

默认会拉 git 仓库的 master 分支

也可以指定 branch、commit hash、tag

[tool.poetry.dependencies]
# Get the latest revision on the branch named "next"
requests = { git = "https://github.com/kennethreitz/requests.git", branch = "next" }
# Get a revision by its commit hash
flask = { git = "https://github.com/pallets/flask.git", rev = "38eb5d3b" }
# Get a revision by its tag
numpy = { git = "https://github.com/numpy/numpy.git", tag = "v0.13.2" }

路径依赖

如果依赖项位于本地目录,可以用 path

[tool.poetry.dependencies]
# directory
my-package = { path = "../my-package/", develop = false }
 
# file
my-package = { path = "../my-package/dist/my-package-0.1.0.tar.gz" }

url 依赖

如果依赖远程仓库的文件,可以用 url

[tool.poetry.dependencies]
# directory
my-package = { url = "https://example.com/my-package-0.1.0.tar.gz" }

可以通过 poetry add 来添加 url

poetry add https://example.com/my-package-0.1.0.tar.gz

Python 限制依赖项

指定仅应该以特定 Python 版本安装依赖项

[tool.poetry.dependencies]
pathlib2 = { version = "^2.2", python = "~2.7" }

[tool.poetry.dependencies]
pathlib2 = { version = "^2.2", python = "~2.7 || ^3.2" }

多个限制

假设依赖包

版本小于等于 1.9 的时候,只能和 Python 2.7 到 Python 2.9 版本兼容

版本大于 2.0 的时候,只能和 Python 3.4 + 版本兼容

[tool.poetry.dependencies]
foo = [
    {version = "<=1.9", python = "^2.7"},
    {version = "^2.0", python = "^3.4"}
]

使用环境限制

感觉比较少用,暂时不展开详解

[tool.poetry.dependencies]
pathlib2 = { version = "^2.2", markers = "python_version ~= '2.7' or sys_platform == 'win32'" }

markers 官方文档:https://www.python.org/dev/peps/pep-0508/#environment-markers

扩展依赖规范语法

当某个依赖项需要添加很多属性的时候,可读性就很差,如下

[tool.poetry.dev-dependencies]
black = {version = "19.10b0", allow-prereleases = true, python = "^3.6", markers = "platform_python_implementation == 'CPython'"}

使用新的语法格式

[tool.poetry.dev-dependencies.black]
version = "19.10b0"
allow-prereleases = true
python = "^3.6"
markers = "platform_python_implementation == 'CPython'"

依赖项的约束完全一样,只不过变成一行一个约束属性,可读性更强

以上就是Python依赖管理及打包工具Poetry依赖规范的详细内容,更多关于Python工具poetry依赖规范的资料请关注脚本之家其它相关文章!

相关文章

  • PyCharm安装第三方库如Requests的图文教程

    PyCharm安装第三方库如Requests的图文教程

    今天小编就为大家分享一篇PyCharm安装第三方库如Requests的图文教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python安装官方whl包和tar.gz包的方法(推荐)

    Python安装官方whl包和tar.gz包的方法(推荐)

    下面小编就为大家带来一篇Python安装官方whl包和tar.gz包的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 如何利用Python实现给Excel表格截图

    如何利用Python实现给Excel表格截图

    这篇文章主要为大家详细介绍了如何利用Python实现给Excel表格截图功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-02-02
  • python数据分析之DateFrame数据排序和排名方式

    python数据分析之DateFrame数据排序和排名方式

    这篇文章主要介绍了python数据分析之DateFrame数据排序和排名方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • python多进程和多线程介绍

    python多进程和多线程介绍

    这篇文章主要介绍了python多进程和多线程,进程是分配资源的最小单位,线程是系统调度的最小单位,下文更多相关资料介绍,需要的小伙伴可以参考一下
    2022-04-04
  • python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例

    python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例

    这篇文章主要介绍了python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例,需要的朋友可以参考下
    2020-03-03
  • 简单介绍Python的轻便web框架Bottle

    简单介绍Python的轻便web框架Bottle

    这篇文章主要介绍了Python的轻便web框架Bottle,因其注重轻便的设计,与Flask一样,Bottle框架的人气同样也非常高,需要的朋友可以参考下
    2015-04-04
  • Python内置函数object的具体使用

    Python内置函数object的具体使用

    Python内置函数object是Python中最基础的类,它是所有类的基类,在 Python 中,所有的类都直接或间接地继承自object类,object类提供了一些默认的方法和属性,这些方法和属性可以被所有 Python 对象使用,
    2025-07-07
  • python淘宝抢购脚本程序实现

    python淘宝抢购脚本程序实现

    大家好,本篇文章主要讲的是python淘宝抢购脚本程序实现,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • Python打印“菱形”星号代码方法

    Python打印“菱形”星号代码方法

    本篇文章通过代码实例给大家详细分析了Python打印“菱形”星号代码方法,对此有需要的朋友参考下吧。
    2018-02-02

最新评论