網(wǎng)站首頁 編程語言 正文
1 簡介
說起Python的包管理工具,大家第一時間想到的肯定是pip、conda等經(jīng)典工具。但最近我發(fā)現(xiàn)了一款新穎的Python包管理工具——pdm,它受到PEP582
以及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)閉你的終端重開一個新的,繼續(xù)輸入:
pipx install pdm
當(dāng)出現(xiàn)以下內(nèi)容時,則代表我們的pdm已經(jīng)安裝完成了~
2.2 pdm的基礎(chǔ)使用
使用pdm以當(dāng)前目錄作為項(xiàng)目倉庫創(chuàng)建項(xiàng)目時,我們需要根據(jù)項(xiàng)目實(shí)際需要,先切換到對應(yīng)Python版本的環(huán)境之下,再執(zhí)行pdm init來初始化項(xiàng)目,以3.7為例:
初始化項(xiàng)目時,根據(jù)自己的實(shí)際情況填寫每個問題即可:
cd C:\Users\pengz\Desktop\當(dāng)期博客工作臺\pdm-demo conda activate dash-apps pdm init
上述過程之后,你會在當(dāng)前目錄下發(fā)現(xiàn)創(chuàng)建好的pyproject.toml
文件,它記錄了當(dāng)前pdm項(xiàng)目的各項(xiàng)基本參數(shù):
接下來我們可以根據(jù)自己項(xiàng)目的實(shí)際需要使用pdm add命令來安裝指定的單個或多個第三方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即可,同時記得將解釋器選為pdm init初始化時所在環(huán)境相對應(yīng)的:
與終端中原始環(huán)境的執(zhí)行結(jié)果對比,可以發(fā)現(xiàn)成功實(shí)現(xiàn)了環(huán)境隔離,這是因?yàn)閜dm項(xiàng)目的__pypackages__中的包會在環(huán)境本身的site-packages之前被載入,從而更好地隔離包的環(huán)境:
如果你想要在其他路徑或其他機(jī)器上還原某個pdm項(xiàng)目,則僅需要將pyproject.toml
與pdm.lock文件拷貝過去,再在對應(yīng)目錄下執(zhí)行pdm sync -v命令即可,非常的方便,類似npm install
配合package.json
的功能:
原文鏈接:https://developer.51cto.com/article/700703.html
相關(guān)推薦
- 2023-06-03 pip?install?python-Levenshtein失敗的解決_python
- 2023-11-11 【LaTex】如何輸入英文字母的花體字?花體字最全總結(jié)
- 2021-12-02 Golang共享變量如何解決問題_Golang
- 2021-12-13 在Centos7中配置NIS的詳細(xì)過程_Linux
- 2022-07-15 服務(wù)器間如何實(shí)現(xiàn)文件共享_服務(wù)器其它
- 2022-03-23 深入淺析OpenCV?copyTo()函數(shù)_C 語言
- 2022-09-10 Pycharm中SQL語句提示SQL?Dialect?is?Not?Configured的解決_py
- 2022-05-24 C#中Dispose和Finalize方法使用介紹_C#教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支