新一代Python包管理工具來了

添加微信號"CNFeffery"加入技術(shù)交流群
1 簡介
說起Python的包管理工具,大家第一時(shí)間想到的肯定是pip、conda等經(jīng)典工具。但最近我發(fā)現(xiàn)了一款新穎的Python包管理工具——pdm,它受到PEP582(https://www.python.org/dev/peps/pep-0582/)以及node管理庫文件方式的啟發(fā),幫助我們以「本地項(xiàng)目庫」的形式創(chuàng)建及管理不同的Python環(huán)境。

2 使用pdm管理項(xiàng)目庫環(huán)境
2.1 pdm的安裝
pdm的安裝方式多種多樣,這里我們使用官方推薦的方式進(jìn)行安裝:
python?-m?pip?install?--user?pipx
python?-m?pipx?ensurepath
接著關(guān)閉你的終端重開一個(gè)新的,繼續(xù)輸入:
pipx?install?pdm
當(dāng)出現(xiàn)以下內(nèi)容時(shí),則代表我們的pdm已經(jīng)安裝完成了~

2.2 pdm的基礎(chǔ)使用
使用pdm以當(dāng)前目錄作為項(xiàng)目倉庫創(chuàng)建項(xiàng)目時(shí),我們需要根據(jù)項(xiàng)目實(shí)際需要,先切換到對應(yīng)Python版本的環(huán)境之下,再執(zhí)行pdm init來初始化項(xiàng)目,以3.7為例:
cd?C:\Users\pengz\Desktop\當(dāng)期博客工作臺\pdm-demo
conda?activate?dash-apps
pdm?init
初始化項(xiàng)目時(shí),根據(jù)自己的實(shí)際情況填寫每個(gè)問題即可:

上述過程之后,你會在當(dāng)前目錄下發(fā)現(xiàn)創(chuàng)建好的pyproject.toml文件,它記錄了當(dāng)前pdm項(xiàng)目的各項(xiàng)基本參數(shù):

接下來我們可以根據(jù)自己項(xiàng)目的實(shí)際需要使用pdm add命令來安裝指定的單個(gè)或多個(gè)第三方Python庫,以flask為例(其中第一行命令用于設(shè)置國內(nèi)pypi鏡像源):
pdm?config?pypi.url?https://pypi.douban.com/simple/
pdm?add?-v?flask?flask-login

完成安裝后,我們可以在當(dāng)前目錄下看到__pypackages_目錄,我們前面所安裝的庫就隔離安裝在其下面,類似node的node_modules目錄:

也與PEP582所倡導(dǎo)的項(xiàng)目結(jié)構(gòu)相符合:
foo
????__pypackages__
????????3.7
????????????lib
????????????????bottle
????myscript.py
這樣就實(shí)現(xiàn)了項(xiàng)目級別的環(huán)境隔離效果,且無需創(chuàng)建額外的虛擬環(huán)境,要在IDE中使用pdm項(xiàng)目下的本地隔離庫執(zhí)行程序很簡單,以pycharm為例,將pdm項(xiàng)目打開為pycharm工程之后,找到如圖所示位置的lib文件夾,將其標(biāo)記為Sources Root即可,同時(shí)記得將解釋器選為pdm init初始化時(shí)所在環(huán)境相對應(yīng)的:

與終端中原始環(huán)境的執(zhí)行結(jié)果對比,可以發(fā)現(xiàn)成功實(shí)現(xiàn)了環(huán)境隔離,這是因?yàn)?code style="margin-right: 2px;margin-left: 2px;padding: 2px 4px;font-size: 14px;overflow-wrap: break-word;border-radius: 4px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;">pdm項(xiàng)目的__pypackages__中的包會在環(huán)境本身的site-packages之前被載入,從而更好地隔離包的環(huán)境:

如果你想要在其他路徑或其他機(jī)器上還原某個(gè)pdm項(xiàng)目,則僅需要將pyproject.toml與pdm.lock文件拷貝過去,再在對應(yīng)目錄下執(zhí)行pdm sync -v命令即可,非常的方便,類似npm install配合package.json的功能:

關(guān)于pdm的更多特性你可以前往其官網(wǎng)https://pdm.fming.dev/了解更多~
以上就是本文的全部內(nèi)容,歡迎在評論區(qū)與我進(jìn)行討論。

加入知識星球【我們談?wù)摂?shù)據(jù)科學(xué)】
500+小伙伴一起學(xué)習(xí)!
·?推薦閱讀?·
盤點(diǎn)2021最佳數(shù)據(jù)可視化作品
「Python實(shí)用秘技04」pdf文件批量添加文字水印
