网站首页 > 技术文章 正文
1 简介
说起Python的包管理工具,大家第一时间想到的肯定是pip、conda等经典工具。但最近我发现了一款新颖的Python包管理工具——pdm,它受到PEP582以及node管理库文件方式的启发,帮助我们以「本地项目库」的形式创建及管理不同的Python环境。
2 使用pdm管理项目库环境
2.1 pdm的安装
pdm的安装方式多种多样,这里我们使用官方推荐的方式进行安装:
python -m pip install --user pipx
python -m pipx ensurepath
接着关闭你的终端重开一个新的,继续输入:
pipx install pdm
当出现以下内容时,则代表我们的pdm已经安装完成了~
2.2 pdm的基础使用
使用pdm以当前目录作为项目仓库创建项目时,我们需要根据项目实际需要,先切换到对应Python版本的环境之下,再执行pdm init来初始化项目,以3.7为例:
初始化项目时,根据自己的实际情况填写每个问题即可:
cd C:\Users\pengz\Desktop\当期博客工作台\pdm-demo
conda activate dash-apps
pdm init
上述过程之后,你会在当前目录下发现创建好的pyproject.toml文件,它记录了当前pdm项目的各项基本参数:
接下来我们可以根据自己项目的实际需要使用pdm add命令来安装指定的单个或多个第三方Python库,以flask为例(其中第一行命令用于设置国内pypi镜像源):
pdm config pypi.url https://pypi.douban.com/simple/
pdm add -v flask flask-login
完成安装后,我们可以在当前目录下看到__pypackages_目录,我们前面所安装的库就隔离安装在其下面,类似node的node_modules目录:
也与PEP582所倡导的项目结构相符合:
foo
__pypackages__
3.7
lib
bottle
myscript.py
这样就实现了项目级别的环境隔离效果,且无需创建额外的虚拟环境,要在IDE中使用pdm项目下的本地隔离库执行程序很简单,以pycharm为例,将pdm项目打开为pycharm工程之后,找到如图所示位置的lib文件夹,将其标记为Sources Root即可,同时记得将解释器选为pdm init初始化时所在环境相对应的:
与终端中原始环境的执行结果对比,可以发现成功实现了环境隔离,这是因为pdm项目的__pypackages__中的包会在环境本身的site-packages之前被载入,从而更好地隔离包的环境:
如果你想要在其他路径或其他机器上还原某个pdm项目,则仅需要将pyproject.toml与pdm.lock文件拷贝过去,再在对应目录下执行pdm sync -v命令即可,非常的方便,类似npm install配合package.json的功能:
关于pdm的更多特性你可以前往其官网https://pdm.fming.dev/了解更多~
- 上一篇: python 基础(四)
- 下一篇: Pydantic:强大的Python 数据验证库
猜你喜欢
- 2025-01-11 Python国内第三方镜像下载
- 2025-01-11 Python其实很简单 第十四章 模块
- 2025-01-11 TTS它又来了!OpenVoice一款借鉴于TTS实现的强大AI语音克隆工具
- 2025-01-11 一段获取磁盘空间信息的python脚本
- 2025-01-11 Qt 调用Python引擎混合编程
- 2025-01-11 如何利用Python开发一个Web网站路径扫描工具?
- 2025-01-11 Pydantic:强大的Python 数据验证库
- 2025-01-11 python 基础(四)
- 2025-01-11 Python每日一库之orjson
- 2025-01-11 PySide:基于 Qt 框架的 Python 高级 UI 库
- 05-25Python 3.14 t-string 要来了,它与 f-string 有何不同?
- 05-25Python基础元素语法总结
- 05-25Python中的变量是什么东西?
- 05-25新手常见的python报错及解决方案
- 05-2511-Python变量
- 05-2510个每个人都是需要知道Python问题
- 05-25Python编程:轻松掌握函数定义、类型及其参数传递方式
- 05-25Python基础语法
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 90℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 81℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)