早期的包管理器(如 Pipevn,Poetry),都是基于虚拟环境的,虚拟环境主要是为了隔离项目开发环境,但如果涉及到虚拟 环境嵌套虚拟环境,问题就难搞了,经常会出现问题。
PDM 包含如下特性:
● PEP 582 本地项目库目录,支持安装与运行命令,完全不需要虚拟环境。
● 一个简单且相对快速的依赖解析器,特别是对于大的二进制包发布。
● 兼容 PEP 517 的构建后端,用于构建发布包(源码格式与 wheel 格式)
● 拥有灵活且强大的插件系统(有插件系统直接就拉开一个档次)
● PEP 621 元数据格式
● 像 pnpm 一样的中心化安装缓存,节省磁盘空间
brew install pipx
pipx ensurepath
python3 -m pip install pipx
python3 -m pipx ensurepath
用pipx安装pdm
Tips:PDM 只有 Python 3.7+ 的版本才能使用,使用其他的方法安装,要先保证你的 Python 版本,但使用 pipx 则不需要你去操心。一定要注意安装pipx的版本以及pipx安装pdm时使用的Python版本,否则 pdm init 会失败
pipx install pdm
pipx list
pdm init
pdm add packageName
pdm add -r requirements.txt # 导入requirements.txt依赖
pdm list
pdm list --graph
pdm show packageName
pdm remove packageName
pdm config
pdm config pypi.url http://mirrors.aliyun.com/pypi/simple
pdm config pypi.url
pdm run
pdm info -v
pdm info --env
pdm info --packages
pdm info --where
pdm info --python
# 更新所有包
pdm update
# 更新某个包
pdm update <pkg>
pdm use python3.9
在 pyproject.toml 添加 [tool.pdm.scripts] 可以设置快捷命令别名,若项目的执行有非常多的参数,这种设定别名的方法将很有用。
[tool.pdm.scripts]
dev = "python3 -m uvicorn main:app --reload --port 4000"
# 或者
dev = {cmd = "python3 -m uvicorn main:app --reload --port 4000"}
# 或者
dev = {cmd = [
"python3",
"-m",
"uvicorn",
"main:app",
"--reload",
# 这种方式可以添加注释
"--port",
"4000"
]}
环境变量
[tool.pdm.scripts]
# 全局
_.env_file = ".env"
# dev 命令
dev.env_file = ".env"
pdm export -o requirements.txt # 方便使用其他包管理器安装依赖
# 修改home下载源并添加
pdm config pypi.url http://mirrors.aliyun.com/pypi/simple
# 修改当前虚拟环境下载源
pdm config --local pypi.url http://mirrors.aliyun.com/pypi/simple
# 修改虚拟环境location
pdm config venv.in_project false # 在项目设置false
pdm config venv.location C:\Users\BFChainer\.pdm\envs # 指定地址
Tips:更换http的源时,需要将将pypi.verify_ssl修改为False;
pdm config pypi.verify_ssl False # 修改config pypi.verify_ssl 为False,关闭pdm验证是否为https地址源
豆瓣:https://pypi.doubanio.com/simple
阿里云:http://mirrors.aliyun.com/pypi/simple
https://developer.aliyun.com/article/992907https://zhuanlan.zhihu.com/p/468445226