Python項(xiàng)目管理的利器Poetry的使用
在 Python 項(xiàng)目開(kāi)發(fā)中,包管理、依賴管理和虛擬環(huán)境的創(chuàng)建一直是開(kāi)發(fā)者們經(jīng)常面對(duì)的難題。傳統(tǒng)上,開(kāi)發(fā)者通常會(huì)使用 pip、virtualenv 或者 conda 來(lái)處理這些問(wèn)題。然而,隨著 Python 項(xiàng)目復(fù)雜度的增加,傳統(tǒng)工具往往顯得力不從心,這時(shí) Poetry 應(yīng)運(yùn)而生,成為一個(gè)更加現(xiàn)代化、簡(jiǎn)潔和高效的工具。
本文將從零開(kāi)始,帶領(lǐng)你快速上手 Poetry,介紹如何使用 Poetry 來(lái)管理 Python 項(xiàng)目,包括安裝、配置、依賴管理、虛擬環(huán)境和打包發(fā)布等。
什么是 Poetry?
Poetry 是一個(gè) Python 項(xiàng)目的管理工具,它集成了依賴管理、虛擬環(huán)境管理、包打包、發(fā)布等功能。Poetry 旨在簡(jiǎn)化開(kāi)發(fā)者的工作流程,讓你能夠輕松地管理項(xiàng)目的依賴,確保環(huán)境的一致性,并快速創(chuàng)建和發(fā)布 Python 包。
Poetry 的關(guān)鍵優(yōu)勢(shì)是:
- 自動(dòng)創(chuàng)建和管理虛擬環(huán)境。
- 精確的依賴解析,避免版本沖突。
- 使用
pyproject.toml文件簡(jiǎn)化配置和管理。 - 支持打包、發(fā)布、安裝等一體化功能。
Poetry 的安裝
首先,你需要在你的系統(tǒng)上安裝 Poetry。你可以使用官方推薦的安裝命令來(lái)進(jìn)行安裝:
1. 安裝 Poetry
打開(kāi)終端(命令行),并運(yùn)行以下命令來(lái)安裝 Poetry:
curl -sSL https://install.python-poetry.org | python3 -
或者,如果你是 Windows 用戶,你可以使用以下 PowerShell 命令:
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicP) | python -
安裝完成后,可以通過(guò)以下命令確認(rèn)是否安裝成功:
poetry --version
如果安裝成功,會(huì)輸出 Poetry 的版本號(hào)。
創(chuàng)建一個(gè)新項(xiàng)目
Poetry 提供了一個(gè)非常簡(jiǎn)潔的命令來(lái)初始化新的 Python 項(xiàng)目,它會(huì)自動(dòng)創(chuàng)建必要的文件結(jié)構(gòu)和配置。
2. 創(chuàng)建新項(xiàng)目
在終端中運(yùn)行以下命令,創(chuàng)建一個(gè)新的 Python 項(xiàng)目:
poetry new my_project
這將會(huì)在當(dāng)前目錄下創(chuàng)建一個(gè)名為 my_project 的文件夾,并且自動(dòng)生成一個(gè)基本的 Python 項(xiàng)目結(jié)構(gòu)。你會(huì)看到如下文件和文件夾:
my_project/
├── my_project/
│ └── __init__.py
├── pyproject.toml
└── tests/
└── __init__.py
pyproject.toml:這是 Poetry 項(xiàng)目的核心配置文件,所有關(guān)于項(xiàng)目的元數(shù)據(jù)(如依賴、版本等)都會(huì)寫(xiě)在這個(gè)文件里。my_project/__init__.py:項(xiàng)目的 Python 源代碼文件。tests/:包含測(cè)試代碼的文件夾,Poetry 默認(rèn)為你創(chuàng)建了一個(gè)簡(jiǎn)單的測(cè)試文件夾。
3. 進(jìn)入項(xiàng)目目錄
cd my_project
管理項(xiàng)目依賴
Poetry 提供了強(qiáng)大的依賴管理功能,讓你可以精確控制項(xiàng)目所需的包版本,并自動(dòng)處理依賴的版本沖突。通過(guò)一些簡(jiǎn)單的命令,你可以輕松地安裝、更新和管理項(xiàng)目依賴。
4. 初始化項(xiàng)目依賴
如果你已經(jīng)有一個(gè)現(xiàn)有的項(xiàng)目,并且希望使用 Poetry 來(lái)管理其依賴,可以通過(guò)以下命令來(lái)初始化項(xiàng)目并創(chuàng)建 pyproject.toml 文件:
poetry init -n
-n 參數(shù)表示自動(dòng)跳過(guò)交互式提示,直接創(chuàng)建文件。這將會(huì)生成一個(gè) pyproject.toml 文件,并為你提供一個(gè)基礎(chǔ)的依賴結(jié)構(gòu)。
5. 添加依賴
當(dāng)你需要向項(xiàng)目中添加一個(gè)新的依賴時(shí),可以使用 poetry add 命令。舉個(gè)例子,如果你想添加 requests 庫(kù),可以運(yùn)行以下命令:
poetry add requests
這會(huì)將 requests 庫(kù)添加到 pyproject.toml 中,同時(shí) Poetry 會(huì)根據(jù)項(xiàng)目的需要自動(dòng)解決依賴版本。
如果你需要添加特定版本的依賴,可以使用類(lèi)似下面的命令:
poetry add requests@2.25.0
6. 安裝所有依賴
如果你從其他地方克隆了一個(gè)項(xiàng)目,并且需要安裝所有的依賴,可以使用 poetry install 命令。它會(huì)根據(jù) pyproject.toml 和 poetry.lock 文件安裝所有的項(xiàng)目依賴:
poetry install
該命令會(huì)自動(dòng)創(chuàng)建并激活虛擬環(huán)境,確保你在隔離的環(huán)境中安裝依賴,從而避免全局包的沖突。
7. 安裝開(kāi)發(fā)依賴
有些依賴是只在開(kāi)發(fā)時(shí)需要的,比如測(cè)試框架。Poetry 允許你使用 --dev 參數(shù)來(lái)安裝開(kāi)發(fā)依賴:
poetry add --dev pytest
此時(shí),pytest 將只會(huì)在開(kāi)發(fā)環(huán)境中安裝,不會(huì)影響生產(chǎn)環(huán)境的依賴。
8. 使用其他 Python 版本
Poetry 允許你指定使用特定的 Python 版本。如果你已經(jīng)安裝了多個(gè) Python 版本,可以通過(guò) poetry env use 命令指定 Python 解釋器的路徑。例如:
poetry env use "path/to/your/python.exe"
這個(gè)命令會(huì)強(qiáng)制 Poetry 使用你指定的 Python 解釋器來(lái)創(chuàng)建虛擬環(huán)境。
9. 使用 requirements.txt
如果你的項(xiàng)目原本使用了 requirements.txt 來(lái)管理依賴,并且你想遷移到 Poetry 上,可以使用以下命令來(lái)安裝 requirements.txt 中的所有依賴:
poetry run pip install -r requirements.txt
這會(huì)在 Poetry 的虛擬環(huán)境中使用 pip 安裝 requirements.txt 中列出的所有依賴項(xiàng),并確保它們與項(xiàng)目的其他依賴兼容。
10. 更新依賴
隨著項(xiàng)目的發(fā)展,依賴可能會(huì)有新的版本發(fā)布。你可以使用 poetry update 命令來(lái)更新所有依賴到最新的兼容版本:
poetry update
這將會(huì)根據(jù)你的 pyproject.toml 文件中的版本要求,更新所有已安裝的依賴。
11. 查看項(xiàng)目的依賴
如果你想查看當(dāng)前項(xiàng)目的所有依賴,可以使用:
poetry show
這將列出所有直接和間接的依賴項(xiàng),并提供每個(gè)包的版本和其他詳細(xì)信息。
12. 刪除依賴
如果某個(gè)依賴不再需要,你可以使用 poetry remove 命令來(lái)刪除它:
poetry remove requests
這會(huì)將 requests 從 pyproject.toml 文件和 poetry.lock 文件中移除,并卸載它。
通過(guò)這些命令,Poetry 使得依賴管理變得更加高效和便捷。無(wú)論是添加、更新、安裝開(kāi)發(fā)依賴,還是使用指定的 Python 版本,Poetry 都提供了靈活的工具來(lái)幫助你管理項(xiàng)目的依賴和虛擬環(huán)境。
虛擬環(huán)境管理
Poetry 自動(dòng)為每個(gè)項(xiàng)目創(chuàng)建和管理虛擬環(huán)境,這樣就能確保你的項(xiàng)目始終在隔離的環(huán)境中運(yùn)行,避免了全局安裝包可能帶來(lái)的沖突。
13. 查看虛擬環(huán)境
如果你想查看 Poetry 創(chuàng)建的虛擬環(huán)境,可以運(yùn)行以下命令:
poetry env list
它會(huì)列出當(dāng)前項(xiàng)目所使用的虛擬環(huán)境。你還可以通過(guò) poetry env use 來(lái)切換 Python 版本。
14. 激活虛擬環(huán)境
你可以通過(guò)以下命令激活虛擬環(huán)境:
poetry shell
這會(huì)激活虛擬環(huán)境,并進(jìn)入一個(gè)新的 shell,你可以在其中運(yùn)行 Python 命令,測(cè)試代碼等。
運(yùn)行項(xiàng)目
Poetry 允許你直接在虛擬環(huán)境中運(yùn)行命令,而不需要先手動(dòng)激活虛擬環(huán)境。
15. 使用 Poetry 運(yùn)行命令
如果你想直接運(yùn)行 Python 腳本,可以使用以下命令:
poetry run python my_project/script.py
poetry run 會(huì)確保命令在 Poetry 管理的虛擬環(huán)境中運(yùn)行。
打包和發(fā)布
當(dāng)你的項(xiàng)目開(kāi)發(fā)完成后,Poetry 還可以幫助你將項(xiàng)目打包并發(fā)布到 PyPI 或其他 Python 包管理平臺(tái)。
16. 打包項(xiàng)目
首先,使用以下命令來(lái)構(gòu)建項(xiàng)目的發(fā)行版:
poetry build
這將會(huì)生成 .tar.gz 和 .whl 格式的包,存放在 dist/ 文件夾中。
17. 發(fā)布到 PyPI
如果你準(zhǔn)備將項(xiàng)目發(fā)布到 PyPI,可以使用以下命令:
poetry publish --repository pypi
當(dāng)然,在發(fā)布前,你需要配置 PyPI 的認(rèn)證信息,可以通過(guò) poetry config 命令進(jìn)行配置。
常用 Poetry 命令總結(jié)
| 命令 | 功能 |
|---|---|
| poetry new <project_name> | 創(chuàng)建一個(gè)新的 Python 項(xiàng)目 |
| poetry add <package> | 添加依賴包到項(xiàng)目中 |
| poetry install | 安裝項(xiàng)目的所有依賴 |
| poetry update | 更新項(xiàng)目依賴到最新版本 |
| poetry shell | 啟動(dòng)項(xiàng)目虛擬環(huán)境的 shell |
| poetry run <command> | 在虛擬環(huán)境中運(yùn)行指定命令 |
| poetry build | 打包項(xiàng)目 |
| poetry publish | 發(fā)布項(xiàng)目到 PyPI |
| poetry env list | 查看虛擬環(huán)境 |
總結(jié)
Poetry 是一個(gè)強(qiáng)大的 Python 項(xiàng)目管理工具,它整合了依賴管理、虛擬環(huán)境、包打包和發(fā)布等多項(xiàng)功能。通過(guò)簡(jiǎn)潔的命令行界面和易于理解的配置文件,它幫助開(kāi)發(fā)者更高效地管理項(xiàng)目,并避免了版本沖突、依賴問(wèn)題等常見(jiàn)困擾。
無(wú)論你是 Python 新手還是資深開(kāi)發(fā)者,Poetry 都是一個(gè)值得嘗試的工具。通過(guò)本文的介紹,你已經(jīng)掌握了如何從零開(kāi)始使用 Poetry 管理你的 Python 項(xiàng)目,管理依賴、虛擬環(huán)境、打包發(fā)布等都變得輕松起來(lái)。
到此這篇關(guān)于Python項(xiàng)目管理的利器Poetry的使用的文章就介紹到這了,更多相關(guān)Python Poetry內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python打包exe文件并隱藏執(zhí)行CMD命令窗口問(wèn)題
這篇文章主要介紹了python打包exe文件并隱藏執(zhí)行CMD命令窗口問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
Python中url標(biāo)簽使用知識(shí)點(diǎn)總結(jié)
這篇文章主要介紹了Python中url標(biāo)簽使用知識(shí)點(diǎn)以及相關(guān)實(shí)例代碼,需要的朋友們參考下。2020-01-01
Python中發(fā)布Web應(yīng)用的常見(jiàn)方法與對(duì)比
這篇文章主要為大家詳細(xì)介紹了Python中發(fā)布?Web?應(yīng)用的幾種常見(jiàn)方法的實(shí)現(xiàn)詳細(xì)步驟以及它們的部署方法對(duì)比,有需要的小伙伴可以參考下2025-02-02
Python 作圖實(shí)現(xiàn)坐標(biāo)軸截?cái)?打斷)的效果
這篇文章主要介紹了Python 作圖實(shí)現(xiàn)坐標(biāo)軸截?cái)?打斷)的效果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
Python進(jìn)程崩潰AttributeError異常問(wèn)題解決
這篇文章主要介紹了Python進(jìn)程崩潰(AttributeError異常)問(wèn)題解決,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下方法2023-06-06
pytorch常用函數(shù)定義及resnet模型修改實(shí)例
這篇文章主要為大家介紹了pytorch常用函數(shù)定義及resnet模型修改實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Python時(shí)間和日期庫(kù)的實(shí)現(xiàn)
這篇文章主要介紹了Python時(shí)間和日期庫(kù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

