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'"

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

相关文章
|
8月前
|
SQL API Python
Python DB API下规范下cursor对象常用接口
Python DB API下规范下cursor对象常用接口。
129 4
|
2月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
60 4
WK
|
3月前
|
开发者 Python
Python 设计规范
Python的设计规范覆盖了代码布局、命名、注释、函数编写及模块化设计等多个方面,旨在提升代码的可读性与维护性。其中包括缩进、行宽、空行等布局要求;变量、函数、类等命名规则;单行与多行注释说明;函数长度与职责划分;模块的单一职责、开放封闭与依赖倒置原则;避免硬编码并使用有意义的命名;以及遵循PEP 8官方编码标准,以确保代码风格的一致性。遵循这些规范能帮助开发者编写更高质量且易于维护的Python代码。
WK
140 2
|
2月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
2月前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
2月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
2月前
|
弹性计算 Linux iOS开发
Python 虚拟环境全解:轻松管理项目依赖
本文详细介绍了 Python 虚拟环境的概念、创建和使用方法,包括 `virtualenv` 和 `venv` 的使用,以及最佳实践和注意事项。通过虚拟环境,你可以轻松管理不同项目的依赖关系,避免版本冲突,提升开发效率。
138 3
WK
|
3月前
|
开发者 Python
Python代码布局规范有哪些
这段内容介绍了Python代码布局的规范,涵盖缩进、空行、行宽、空格使用、注释及顶级定义间的空行等方面,强调使用空格缩进、限制行宽、操作符两侧加空格、简洁注释等实践,旨在提升代码可读性和一致性,便于维护与理解。遵循这些规范能帮助开发者编写更清晰、整洁且易读的Python代码。
WK
54 2
|
8月前
|
Python
【Python操作基础】——语句书写规范
【Python操作基础】——语句书写规范
|
5月前
|
Python
【Python高手必备】从菜鸟到大师——一份详尽的Python编写规范指南,让你的代码焕然一新!
【8月更文挑战第22天】Python以简洁易读著称,遵循编写规范对保证代码质量至关重要。规范包括:使用4空格缩进,函数间空两行提升可读性,每行不超过79字符,及特定命名约定。如函数`calculate_total`、类`ShoppingCart`、常量`PI`。注释解释逻辑,文档字符串描述功能。利用`try-except`处理异常,有序导入模块,避免通配符导入防止命名冲突。使用列表推导和生成器表达式优化性能。遵循这些规范,可使代码更规范、易读和易维护。
93 1