先祝大家圣诞快乐。
PDM 刚刚也发布了 1.0.0 beta 版,距离上次在 V 站宣传 PDM,又多了很多好用的功能
- PEP 621 metadata 标准
- PEP 582 local package 现在 直接用
python xxx.py运行就能加载隔离环境的包了。 - 支持其他主流 metadata 格式导入:requirements.txt/Pipenv/Poetry/Flit
- Bash/Zsh/Fish/PowerShell 命令补全,支持 Windows 一直是高优先级,因为我自己就用的是 Windows
- pdm scripts 快捷运行(类似 package.json 的 scripts ),支持环境变量加载
关于第 2 条我具体说下这有什么好处,比如我现在要写一个 Flask 应用,只需要
没有 activate deactivate,直接启动
这能做什么呢?比如我在 user site 下面安装了一个 IPython,现在我不用在每个环境里都装一个 IPython,只要保证用的 Python 版本是一致的,那我就可以到处用这个 IPython 导入__pypackages__中的包做调试了。(只是举个例子,IPython 能自动探测处于 venv 中并加载包路径,但还有很多其他的命令行工具是没办法这样的)
是的没错,venv 其实也可以实现这个效果,不过就是在创建的时候加上--site-packages选项嘛,但已经创建好的呢,估计不是所有人都知道去改那个pyvenv.cfg。何况始终要记得 activate 才能启用 venv 中的包。
但 PDM 最大的一个缺陷是(别喷,我自己招,哈哈):IDE 的支持,每次创建新项目,都需要进行手动配置才能使用__pypackages__中的包。