Python - poetry(5)依赖规范

简介: Python - poetry(5)依赖规范

啥是依赖规范


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

 

版本约束


^ 约束

编写规范 允许的版本范围
^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'"

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

相关文章
|
3月前
|
机器学习/深度学习 数据采集 自然语言处理
Python编程的十大神奇依赖库
Python编程的十大神奇依赖库
|
6月前
|
Python
项目依赖的python包requirements.txt文件的生成与安装
项目依赖的python包requirements.txt文件的生成与安装
180 0
|
1月前
|
SQL API Python
Python DB API下规范下cursor对象常用接口
Python DB API下规范下cursor对象常用接口。
21 4
|
2天前
|
Python
【Python操作基础】——语句书写规范
【Python操作基础】——语句书写规范
|
2月前
|
分布式计算 DataWorks 关系型数据库
DataWorks常见问题之第三方Python依赖包使用失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
3月前
|
开发者 Python
解码pip:Python项目依赖的得力助手
解码pip:Python项目依赖的得力助手
54 0
|
5月前
|
网络安全 C语言 Python
Python【问题 01】pip install MySQL-python==1.2.4b4 依赖安装问题记录及解决
Python【问题 01】pip install MySQL-python==1.2.4b4 依赖安装问题记录及解决
36 0
|
5月前
|
Serverless Python
在阿里函数计算中,你可以通过以下步骤在本地安装Python依赖
在阿里函数计算中,你可以通过以下步骤在本地安装Python依赖
65 1
|
5月前
|
Serverless Python
阿里函数计算中,你可以通过以下步骤在本地安装Python依赖
阿里函数计算中,你可以通过以下步骤在本地安装Python依赖
68 6
|
6月前
|
机器学习/深度学习 数据挖掘 Linux
如何在Python中使用虚拟环境管理依赖
当在Python中开发项目时,使用虚拟环境来管理依赖是一种良好的实践,可以隔离不同项目的依赖关系,避免冲突,并确保项目的稳定性。