Python依賴管理及打包工具Poetry使用規(guī)范
啥是依賴規(guī)范
可以以各種形式指定項(xiàng)目的依賴項(xiàng),取決于依賴項(xiàng)的類型以及安裝項(xiàng)目可能需要的可選約束
版本約束
^ 約束
| 編寫規(guī)范 | 允許的版本范圍 |
|---|---|
| ^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 |
- 當(dāng)最左邊的數(shù)字為非 0,則以左一數(shù)字為主版本號(hào),比如:^2.13.0,可以取 2.14.0,但不能取 3.0.0,因?yàn)橹靼姹咎?hào)已經(jīng)變了
- 如果左一的數(shù)字為 0,則以左二的數(shù)字為主版本號(hào),比如:^0.1.0 可以取 0.1.1、0.1.19,但不能取 0.2.0,因?yàn)橹靼姹咎?hào)已經(jīng)變了
~ 約束
| 編寫規(guī)范 | 允許的版本范圍 |
|---|---|
| ~1.2.3 | >=1.2.3 <1.3.0 |
| ~1.2 | >=1.2.0 <1.3.0 |
| ~1 | >=1.0.0 <2.0.0 |
和上面的 ^ 差不多,不過這個(gè)是次要版本,以第二個(gè)數(shù)字為基準(zhǔn)
* 約束
有點(diǎn)像萬能匹配符,寫在哪里都可以
| 編寫規(guī)范 | 允許的版本范圍 |
|---|---|
| * | >=0.0.0 |
| 1.* | >=1.0.0 <2.0.0 |
| 1.2.* | >=1.2.0 <1.3.0 |
比較符
就常規(guī)的>、< 符號(hào)了
>= 1.2.0 > 1 < 2 != 1.2.3
確定的版本號(hào)或范圍
>= 1.2,< 1.5
git 依賴
可以指定依賴項(xiàng)的 git 倉(cāng)庫(kù)地址
[tool.poetry.dependencies]
requests = { git = "https://github.com/requests/requests.git" }
默認(rèn)會(huì)拉 git 倉(cāng)庫(kù)的 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" }
路徑依賴
如果依賴項(xiàng)位于本地目錄,可以用 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 依賴
如果依賴遠(yuǎn)程倉(cāng)庫(kù)的文件,可以用 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 限制依賴項(xiàng)
指定僅應(yīng)該以特定 Python 版本安裝依賴項(xiàng)
[tool.poetry.dependencies]
pathlib2 = { version = "^2.2", python = "~2.7" }
[tool.poetry.dependencies]
pathlib2 = { version = "^2.2", python = "~2.7 || ^3.2" }
多個(gè)限制
假設(shè)依賴包
版本小于等于 1.9 的時(shí)候,只能和 Python 2.7 到 Python 2.9 版本兼容
版本大于 2.0 的時(shí)候,只能和 Python 3.4 + 版本兼容
[tool.poetry.dependencies]
foo = [
{version = "<=1.9", python = "^2.7"},
{version = "^2.0", python = "^3.4"}
]
使用環(huán)境限制
感覺比較少用,暫時(shí)不展開詳解
[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
擴(kuò)展依賴規(guī)范語法
當(dāng)某個(gè)依賴項(xiàng)需要添加很多屬性的時(shí)候,可讀性就很差,如下
[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'"
依賴項(xiàng)的約束完全一樣,只不過變成一行一個(gè)約束屬性,可讀性更強(qiáng)
以上就是Python依賴管理及打包工具Poetry依賴規(guī)范的詳細(xì)內(nèi)容,更多關(guān)于Python工具poetry依賴規(guī)范的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
PyCharm安裝第三方庫(kù)如Requests的圖文教程
今天小編就為大家分享一篇PyCharm安裝第三方庫(kù)如Requests的圖文教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05
如何利用Python實(shí)現(xiàn)給Excel表格截圖
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)給Excel表格截圖功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02
python數(shù)據(jù)分析之DateFrame數(shù)據(jù)排序和排名方式
這篇文章主要介紹了python數(shù)據(jù)分析之DateFrame數(shù)據(jù)排序和排名方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
python GUI庫(kù)圖形界面開發(fā)之PyQt5信號(hào)與槽基礎(chǔ)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開發(fā)之PyQt5信號(hào)與槽基礎(chǔ)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03
簡(jiǎn)單介紹Python的輕便web框架Bottle
這篇文章主要介紹了Python的輕便web框架Bottle,因其注重輕便的設(shè)計(jì),與Flask一樣,Bottle框架的人氣同樣也非常高,需要的朋友可以參考下2015-04-04
Python內(nèi)置函數(shù)object的具體使用
Python內(nèi)置函數(shù)object是Python中最基礎(chǔ)的類,它是所有類的基類,在 Python 中,所有的類都直接或間接地繼承自object類,object類提供了一些默認(rèn)的方法和屬性,這些方法和屬性可以被所有 Python 對(duì)象使用,2025-07-07
python淘寶搶購(gòu)腳本程序?qū)崿F(xiàn)
大家好,本篇文章主要講的是python淘寶搶購(gòu)腳本程序?qū)崿F(xiàn),感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02

