PDM
https://pdm-project.org/zh-cn/latest/
https://juejin.cn/post/7315126100539473930
PDM 是一个支持最新 PEP 标准的现代 Python 包和依赖项管理器
PDM(Python Development Master)是一款新一代的 Python 包管理工具,旨在提供更为现代化、可靠且灵活的解决方案。与传统的 pip 和 Poetry 相比,PDM 在依赖版本管理、项目隔离和性能优化等方面展现出独特的优势。
# install pdm
sudo apt install python3.10-venv
curl -sSL https://pdm-project.org/install-pdm.py | python3 -
# 安装程序会将 PDM 安装到用户家目录中, linux 系统
#$HOME/.local/bin Unix 系统
# 初始化项目
pdm sync
# 加入新的依赖包, pdm会自动维护 pyproject.toml 文件, 但是版本范围可能需要改一下
pdm add redis
# pdm install 和 pdm sync 的区别
# pdm install: 安装 pyproject.toml 中定义的所有依赖,并更新 pdm.lock(如果需要)
# pdm sync: 严格按照 pdm.lock 文件安装依赖,不会更新 lock 文件,确保环境完全一致
# 推荐使用场景:
# - 开发环境:使用 pdm install,允许依赖更新
# - 生产环境/CI:使用 pdm sync,确保依赖版本完全一致
pdm info --env
# pdm use 切换到 Python 3.14
pdm use python3.14
pdm self update
rm pdm.lock
pdm lock
配置文件
pyproject.toml
~=(兼容版本运算符: 例如,python-dotenv~=0.20.0 表示允许安装 python-dotenv 的版本为 0.20.0 到小于 0.21.0 之间的任何版本。
>=(大于或等于运算符):
这个符号表示版本必须大于或等于指定的版本。
它允许依赖项更新到任何比指定版本新的版本。
例如,redis>=5.2.1 表示允许安装 redis 的版本为 5.2.1 或更高。
~= 提供了一种限制性更强的版本控制,通常用于确保兼容性, >= 则是更为开放的版本要求,允许依赖项更新到任何未来版本。
conda
https://zhuanlan.zhihu.com/p/554965293
conda可以理解为一个工具,其核心功能是包管理与环境管理。 conda 不会依赖于系统中已经存在的 python 进行运行。因此 conda 拥有较高的独立性以及强悍地跨版本支持,在多版本管理上 每个虚拟环境中均包含了一个完整的 python conda 的虚拟环境更像是对整个开发环境的虚拟,而不是 poetry 和 pdm 那种在解释器层面的虚拟
pipx
pipx 用来安装和运行 Python 写的命令行工具:每个工具会单独建一个虚拟环境(依赖互不干扰),但可执行文件会链接到 ~/.local/bin,效果上就是"全局可用的命令",不需要手动 activate。
跟直接 pip install 或 venv 的区别:
pip install xxx:装到系统 Python 环境里,多个工具的依赖容易互相冲突;新版 Arch/Debian 出于 PEP 668 会直接拒绝,报externally-managed-environment错误venv:需要source venv/bin/activate才能用,适合项目依赖隔离,不适合"随时在任意目录敲命令"的场景pipx:专门解决"我要装一个 CLI 工具,装完就想在任何目录直接用"这个需求
安装(Arch)
sudo pacman -S python-pipx
pipx ensurepath # 把 ~/.local/bin 加入 PATH,需要重开终端或 source 配置文件生效
常用命令
pipx install grip # 安装一个 CLI 工具
pipx list # 查看已安装的工具
pipx upgrade grip # 升级
pipx uninstall grip # 卸载
pipx run cowsay hello # 不安装,临时运行一次
维护记录
| 时间 | 修改内容 | 原因 |
|---|---|---|
| 2026-07-28 | 补充 pipx 章节;标题改为含英文;分类由 Inbox 改为 language;删除 reprint 标签,补 python 标签;新增 lastmod;清理文末乱码 | 完善 Python 环境/包管理工具文档,修正不符合规范的 front matter |