1 简介
说起Python 的包管理工具,大家第一时间想到的肯定是pip 、conda 等经典工具。但最近我发现了一款新颖的Python 包管理工具——pdm ,它受到PEP582 (
https://www.python.org/dev/peps/pep-0582/ )以及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-appspdm 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 的功能:
?
|