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
投稿
猜你喜欢
- 1 自动化测试自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为
- 作用域:顾名思义,作用的范围。如果你是自学者,而且已经进军到函数这一部分了,那么就应当了解下Python的作用域。否则你可能会像我一样,总是
- 网站设计时,有一个最常用的指导性原则:页面长度原则上不超过3屏,宽度不超过1屏。这个原则明显是从用户的体验出发,特别是宽度不超过一屏,其最基
- 前言调用,让客户端可以更具自身情况自由选择,服务端工作只需要做一份呢?还别说真还有一个准备好的轮子那就是今天的主角《grpc-gateway
- 在web.config文件中添加<connectionStrings><add name="SQLConnect
- 在一些不多的数据下载和生成的时候,我们倾向于直接保存为文件,当我们修改某些参数后再一次运行时,之前运行时生成的文件就被覆盖了。为了解决这个问
- 误区 #12:TempDB的文件数和需要和CPU数目保持一致错误 哎,由于上述误区是微软“官方”的建议,
- 在正式编写爬虫案例前,先对 scrapy 进行一下系统的学习。scrapy 安装与简单运行使用命令 pip install scrapy 进
- if"""条件语句:ifif...elseif...elif...elseif 语句的格式:if 条件: &n
- python写入文件取消自动换行问题描述使用pycharm进行文件写入时,发现如果一行文字的长度过长,写入的过程则会自动换行,如何取消自动换
- 以下是一个基于 Vue 3 实现的简单日历组件的代码示例。这个日历组件包含了前一个月、当前月、下一个月的日期,并且可以支持选择日期、切换月份
- 昨天我只是将数据库附加到SQL2012,然后各个数据库都做了收缩事务日志的操作兼容级别这些都没有改再附加回SQL2005的时候就报错在SQL
- # encoding: UTF-8import threadimport time# 一个用于在线程中执行的函数def func():&nb
- 本文实例讲述了JS实现向表格行添加新单元格的方法。分享给大家供大家参考。具体如下:下面的JS代码可以想表格中指定id的行插入新的单元格<
- 一、安装pip install pymysql二、连接数据库三种连接数据库的方式import pymysql# 方式一conn = pymy
- 今天帮助同事解决一个问题,问题是她做的一套页面在FF下显示正常,在IE6下样式却没有效果,也就是没有应用样式。最终发现是编码不匹配的问题,c
- 本文实例为大家分享了python批量转换图片为黑白的具体代码,供大家参考,具体内容如下用到的库:OpenCV、osimport cv2imp
- 以下就重复记录删除的问题作一阐述。 有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如N
- 前言提到数据库,你多半会联想到事务,进而还可能想起曾经背得滚瓜乱熟的ACID,不知道你有没有想过这个问题,事务有原子性、隔离性、一致性和持久
- 生成方式Python中想要自动生成 model文件可以通过 sqlacodegen这个命令来生成对应的model文件sqlacodegen