网络编程
位置:首页>> 网络编程>> Python编程>> Python依赖管理及打包工具Poetry使用规范

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

作者:小菠萝测试笔记  发布时间:2021-06-02 13:21:43 

标签: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'"

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

来源:https://blog.csdn.net/qq_33801641/article/details/120320778

0
投稿

猜你喜欢

  • 在过去的十年中,MySQL已经成为广受欢迎的数据库,而WordPress博客使用的是MySQL数据库,虽然使用插件可以解决一些问题,但是实现
  • 简介:在视频相关测试场景下,例如:有时需要知道全部视频的汇总时长,显然一个个打开并且手工计算耗时耗力,我们可以通过编写脚本进行快速汇总。获取
  • ff默认不让改 statusopera9   测试通过ie6 测试通过这东西是给统计部门用的,分析用户习惯以改良网站布局
  • 在一些网页应用中,就比如在投票系统中,当我们进行的是多项投票时,我们要求用户最多只能选择几项进行投票,这也是就是说选择复选框的个数最多几个.
  • 本文介绍了vscode 远程调试python的方法,分享给大家,具有如下:实验环境远程服务器:京东云,1核2G,centos7.3 64bi
  • 工作时常遇到需要在其它地方拷贝样式,比如Firebug之类的,但是复制出来的样式是带有换行和空格的,对于我这种有点洁癖的人来说,经常会一个个
  • 现在大多数Centos6.x版本的系统python都是2.x,现因开发需求需要安装前端代码的构建工具glue,故必须要做python版本的升
  • python安装库时,有时候会报错windows error 5,可以尝试关闭所有使用python的编辑器、文件等,然后重新pip安装,如果
  • 前言:对于 图片处理,在日常生活中我们常常能够看到。比如发个朋友圈之前,我们需要给自己的照片加个滤镜;在上传头像时候,需要对照片进行裁剪,这
  • SQL Server导出表到EXCEL文件的存储过程:*--数据导出EXCEL导出表中的数据到Excel,包含字段名,文件为真正的Excel
  • python爬虫学习之定向爬取淘宝商品价格,供大家参考,具体内容如下import requestsimport redef getHTMLT
  • 我们在使用ASP 内置的ADO组件进行数据库编程时,通常是在脚本的开头打开一个连接,并在脚本的最后关闭它,但是就较大脚本而言,在多数情况下连
  • ExpiresAbsolute 属性指定缓存于浏览器中的页的到期日期和时间语法Response.ExpiresAbsolute [
  • 正文在平时的开发过程中,我们会遇到一些特殊的应用场景,如果你想要在执行某种操作之前或者之后你能够得到通知,并对其进行一些你想要的操作时,你就
  • PHP Too few arguments to function的解决过去自定义函数的时候如果参数不足,则会抛出一个警告,但是在7.1开始
  • 在用户体验量化方法研究(一)中,我们以用户体验层次模型为基础,提出了三种量化用户体验的方法:以任务为中心、以行为为中心以及以体验为中心的量化
  •  Python heapq 详解Python有一个内置的模块,heapq标准的封装了最小堆的算法实现。下面看两个不错的应用。小顶堆
  • 界面的制作一直是 Python 的痛!使用 Python 制作桌面端界面是非常痛苦的过程(又难学又难看)。不过,Python 已经出现了几个
  • 你是否发现,在浩如烟海的应用程序堆里,具有漂亮图标和清爽名字的 App 更容易被用户喜爱。作为开发者,面对这自己的作品,能否自问一句:“从图
  • 一、APC缓存简介APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”。它为我们提供了缓存和优化PHP的中
手机版 网络编程 asp之家 www.aspxhome.com