Python項(xiàng)目管理工具Poetry使用示例詳解
1. 導(dǎo)讀
本文將介紹一個(gè)目前十分流行,且用于眾多Python
項(xiàng)目中依賴(lài)管理和打包的工具,包含基本的安裝與使用。
2. Poetry
Poetry 是Python 中用于依賴(lài)管理和打包的工具。它允許您聲明項(xiàng)目所依賴(lài)的庫(kù),并將為您管理(安裝/更新)它們。
Poetry 提供了一個(gè)鎖定文件以確保可重復(fù)安裝,并且可以構(gòu)建您的項(xiàng)目以進(jìn)行分發(fā)。
2.1. *toml文件
pyproject.toml
可以算是Poetry
的核心配置文件了,里面包含了項(xiàng)目的相關(guān)信息,使用的環(huán)境信息,安裝的依賴(lài)信息,主要有一下配置:
# 項(xiàng)目包的名字 name = "my-package" # 版本 version = "0.1.0" # 包的描述 description = "A short description of the package." # 許可證 license = "MIT" # 作者 authors = ["冷凍工廠(chǎng) <storyice@163.com>",] # 維護(hù)者 maintainers = ["冷凍工廠(chǎng) <storyice@163.com>",] # READMD文件 readme = ["docs/README1.md", "docs/README2.md"] # 包的介紹主頁(yè) homepage = "https://python-poetry.org/" # 倉(cāng)庫(kù)地址 repository = "https://github.com/python-poetry/poetry" # 文檔 documentation = "https://python-poetry.org/docs/"
3. 實(shí)戰(zhàn)
3.1. 安裝
在Linux、macOS、Windows (WSL)中安裝Poetry
- Linux、macOS、Windows (WSL)
curl -sSL https://install.python-poetry.org | python3 -
- 升級(jí)現(xiàn)有
Poetry
poetry self update
3.2. 新建項(xiàng)目
- 創(chuàng)建新的項(xiàng)目
poetry new project-name # 項(xiàng)目名 與 文件夾名 不同 poetry new folder-name --name project-name # 使用src項(xiàng)目結(jié)構(gòu)(可選) poetry new --src project-name # 初始化已經(jīng)存在的項(xiàng)目 cd project-name-dir poetry init
3.3. 環(huán)境管理
poetry首先會(huì)檢查當(dāng)前項(xiàng)目是否存在虛擬環(huán)境,如果存在,保持現(xiàn)有環(huán)境,如果沒(méi)有,會(huì)自動(dòng)創(chuàng)建一個(gè)與當(dāng)前依賴(lài)相匹配的環(huán)境。
- 選擇項(xiàng)目環(huán)境
poetry env use /full/path/to/python # 如果解釋器已經(jīng)添加到環(huán)境變量中 poetry env use python3.7 poetry env use 3.7 # 同上,二選一
- 顯示當(dāng)前環(huán)境信息
poetry env info
- 顯示與當(dāng)前項(xiàng)目相關(guān)的環(huán)境
poetry env list
- 刪除環(huán)境
poetry env remove /full/path/to/python # 同時(shí)刪除多個(gè)環(huán)境 poetry env remove python3.6 python3.7 python3.8 # 一次性刪除全部環(huán)境 poetry env remove --all
小編建議設(shè)置下面配置,其作用是將虛擬環(huán)境的文件夾放置于項(xiàng)目文件夾下
poetry config virtualenvs.in-project true
3.4. 依賴(lài)管理
使用Poetry
進(jìn)行添加依賴(lài),有兩種方式。一種是在命令行中,直接使用相關(guān)命令來(lái)添加依賴(lài),或者刪除依賴(lài)。另外一種是,通過(guò)修改項(xiàng)目中的pyproject.toml
文件,來(lái)管理依賴(lài)。
- 命令行管理
# 添加依賴(lài) poetry add <lib> # 添加dev依賴(lài) poetry add <lib> --dev # poetry add package-name -D # 刪除依賴(lài) poetry remove <lib> # 更新依賴(lài) poetry update # 鎖定依賴(lài)版本 poetry lock # 列出全部依賴(lài)項(xiàng) poetry show # 列出陳舊的依賴(lài)項(xiàng) poetry show --outdated # 搜索指定的包 poetry search <name>
- 配置文件管理
[tool.poetry] name = "project-name" version = "0.1.0" description = "" authors = ["Swindler <jzj@1033199817@qq.com>"] readme = "README.md" packages = [{include = "project_name"}] [tool.poetry.dependencies] python = "^3.8" # 在此直接添加,如 0.1.0 版本的numpy numpy = "0.1.0" # 如果不知道指定的版本,可以用*代替,Poetry會(huì)自動(dòng)選擇合適的版本 numpy = "*" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api"
根據(jù)配置文件更新依賴(lài)
poetry update
依賴(lài)的版本指定,支持不等式(簡(jiǎn)單易用)
>= 1.2.0 > 1 < 2 != 1.2.3
3.5. 換源
Poetry
也支持換源,加速依賴(lài)的下載速度.
- 清華源
# 將下方配置添加至pyproject.toml末尾即可 [[tool.poetry.source]] name = "tsinghua-source" url = "https://pypi.tuna.tsinghua.edu.cn/simple/" default = true # 僅從定義倉(cāng)庫(kù)獲取
- 阿里源
# 將下方配置添加至pyproject.toml末尾即可 [[tool.poetry.source]] name = "aliyun-source" url = " http://mirrors.aliyun.com/pypi/simple/" default = true # 僅從定義倉(cāng)庫(kù)獲取
3.6. requirement
Poetry
也支持requirement.txt
操作
- 導(dǎo)出
requirement.txt
poetry export -f requirements.txt --output requirements-prod.txt --without-hashes
- 導(dǎo)入
requirement.txt
cat requirements.txt|xargs poetry add
以上就是Python項(xiàng)目管理工具Poetry使用示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Python Poetry項(xiàng)目管理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python基于Bokeh庫(kù)制作子彈圖及瀑布圖示例教程
這篇文章主要為大家介紹了python基于Bokeh庫(kù)制作子彈圖及瀑布圖的實(shí)現(xiàn)示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2021-10-10Python腳本實(shí)現(xiàn)自動(dòng)替換文件指定內(nèi)容
這篇文章主要為大家詳細(xì)介紹了如何編寫(xiě)一個(gè)py腳本,可以實(shí)現(xiàn)自定義替換py文件里面指定內(nèi)容,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-03-03python實(shí)現(xiàn)Android與windows局域網(wǎng)文件夾同步
這篇文章主要給大家詳細(xì)介紹了python實(shí)現(xiàn)Android與windows局域網(wǎng)文件夾同步,文中有詳細(xì)的代碼示例和圖文介紹,具有一定的參考價(jià)值,需要的朋友可以參考下2023-09-09Python字符串對(duì)象實(shí)現(xiàn)原理詳解
這篇文章主要介紹了Python字符串對(duì)象實(shí)現(xiàn)原理詳解,在Python世界中將對(duì)象分為兩種:一種是定長(zhǎng)對(duì)象,比如整數(shù),整數(shù)對(duì)象定義的時(shí)候就能確定它所占用的內(nèi)存空間大小,另一種是變長(zhǎng)對(duì)象,在對(duì)象定義時(shí)并不知道是多少,需要的朋友可以參考下2019-07-07python學(xué)習(xí)筆記之調(diào)用eval函數(shù)出現(xiàn)invalid syntax錯(cuò)誤問(wèn)題
python是一門(mén)多種用途的編程語(yǔ)言,時(shí)常扮演腳本語(yǔ)言的角色。一般來(lái)說(shuō),python可以定義為面向?qū)ο蟮哪_本語(yǔ)言,這個(gè)定義把面向?qū)ο蟮闹С趾兔嫦蚰_本語(yǔ)言的角色融合在一起。很多時(shí)候,人們常常喜歡用“腳本”和不是語(yǔ)言來(lái)描述python的代碼文件。2015-10-10Flask框架請(qǐng)求鉤子與request請(qǐng)求對(duì)象用法實(shí)例分析
這篇文章主要介紹了Flask框架請(qǐng)求鉤子與request請(qǐng)求對(duì)象用法,結(jié)合實(shí)例形式詳細(xì)分析了Flask框架請(qǐng)求鉤子與request請(qǐng)求對(duì)象相關(guān)原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2019-11-11