#Python工具

受到PEP582以及node管理库文件方式的启发,以「本地项目库」的形式创建及管理不同的Python环境。

具体的介绍可以查看官方文档

安装

这里仅介绍官方推荐的方法

1
2
python -m pip install --user pipx
python -m pipx ensurepath

接着关闭你的终端重开一个新的,继续输入(通过[[pipx]]安装):

1
pipx install pdm

当出现以下内容时,则代表我们的pdm已经安装完成了~
image.png

使用

无法指定Python版本,只能依赖于已有的版本

项目的构建

使用pdm以当前目录作为项目仓库创建项目时,需要根据项目的实际需要^^切换到对应的Python版本^^,再执行pdm init来初始化项目

1
2
3
cd C:\Users\pengz\Desktop\当期博客工作台\pdm-demo
conda activate dash-apps
pdm init

初始化项目时,根据自己的实际情况填写每个问题即可
image.png
初始化完成项目之后,可以在当前目标下创建好pyproject.toml文件,它记录了当前pdm项目的各项基本参数
image.png

为项目安装环境

根据自己项目的实际需要使用pdm add命令来安装指定的单个或多个第三方Python库,以flask为例(其中第一行命令用于设置国内pypi镜像源)

1
2
pdm config pypi.url https://pypi.douban.com/simple/
pdm add -v flask flask-login

安装完成之后,可以在当前目录下看到__pypackages__目录,安装的库就隔离安装在下面,类似node的node_modules目录
image.png
与PEP582所倡导的项目结构相符合

1
2
3
4
5
6
foo
__pypackages__
3.7
lib
bottle
myscript.py

这样就实现了项目级别的环境隔离效果,且无需创建额外的虚拟环境

与IDE联动

Pycharm

将pdm项目打开为pycharm工程之后,找到图中lib文件夹,将其标记为Sources Root即可,同时记得将解释器选为pdm init 初始化所在环境相对应的:
image.png
与终端中原始环境的执行结果对比,可以发现成功实现了环境隔离,这是因为pdm项目的__pypackages__中的包会在环境本身的site-packages之前被载入,从而更好地隔离包的环境 image.png

迁移

如果想要在其他路径或其他机器上还原莫个pdm项目,则仅需要将^^pyproject.toml 与pdm.lock^^文件拷贝过去,再在对应目录下执行^^pdm sync -v^^ 命令即可,非常的方便,类似npm install 融合package.json 功能 image.png

提速

1
pdm config pypi.url https://pypi.douban.com/simple/