poetry 是目前比较流行的 Python 环境管理工具 和 包管理工具,对多项目开发时的环境隔离有非常大的帮助,同时集成了包管理能力。
官方网站 https://python-poetry.org/ 集成了所有 Poetry 最新的使用文档,以下仅在我的环境上经过验证
安装方式
# In Pip- 安装 pip install poetry # pip3- 更新 poetry self update# In my Mac- 安装 brew install poetry- 更新 brew upgrade poetry# In my CentOS- 安装 curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -- 更新 poetry self update
配置技巧相关
在开始使用前,建议先对poetry 的配置有些了解,并调整为适合你的方式,主要是调整一下虚拟环境的安装位置
:::info
poetry config poetry 相关的查看和编辑的命令
:::
~ poetry config --list # 获取当前 poetry 的配置情况cache-dir = "/Users/$username/Library/Caches/pypoetry"experimental.new-installer = trueinstaller.parallel = truevirtualenvs.create = truevirtualenvs.in-project = truevirtualenvs.path = "{cache-dir}/virtualenvs" # /Users/$username/Library/Caches/pypoetry/virtualenvs
| 配置项目 | 配置内容 | 配置项说明 | 建议配置 |
|---|---|---|---|
| cache-dir | String | 缓存目录配置,使用 poetry 安装的包源文件都会缓存到这个目录。 | 不建议更改 |
| installer.parallel | boolean | 此配置会被忽略 | |
| virtualenvs.create | boolean | 默认为true,如果当前工程的虚拟环境不存在,就创建一个 | 不建议更改 |
| virtualenvs.in-project | boolean | None:poetry 会在系统特定目录创建一个.venv目录,由下面的 path 参数指定 true: poetry 会在项目根目录创建一个.venv目录 false: poetry 将会忽略已存在的.venv目录 |
《建议修改》 推荐这种方式,在项目根目录创建虚拟环境,这样就算移动目录位置也不影响虚拟环境的使用 |
| virtualenvs.path | string | 默认是{cache-dir}/virtualenvs,虚拟环境创建的目录,如果上面的 in-project 为 true,此配置就无效 | 不建议更改 |
:::danger 建议 在使用前 启用 virtualenvs.in-project ,这样会在每个项目下有一个.venv 方便隔离管理 :::
# poetry 配置说明poetry config virtualenvs.in-project true
poetry 常用指令说明
| Poetry Command | 解释 |
|---|---|
| $ poetry —version | 显示您的 Poetry 安装版本。 |
| $ poetry new | 创建一个新的Poetry项目。 |
| $ poetry init | 将 Poetry 添加到现有项目中。 |
| $ poetry run | 使用 Poetry 执行给定的命令。 |
| $ poetry add | 添加一个包pyproject.toml并安装它。 |
| $ poetry update | 更新项目的依赖项。 |
| $ poetry install | 安装依赖项。 |
| $ poetry show | 列出已安装的软件包。 |
| $ poetry lock | 将最新版本的依赖项固定到poetry.lock. |
| $ poetry lock —no-update | 刷新poetry.lock文件而不更新任何依赖版本。 |
| $ poetry check | 验证pyproject.toml。 |
| $ poetry config —list | 显示 Poetry 配置。 |
| $ poetry env list | 列出项目的虚拟环境。 |
| $ poetry export | 导出poetry.lock为其他格式。 |
新项目初始化流程
这里以 初始化一个 FastAPI 项目作为 实例
➜ fastapi poetry new fastapi-demoCreated package fastapi_demo in fastapi-demo➜ fastapi ls -lh fastapi-demototal 8-rw-r--r-- 1 samzonglu staff 0B 2 15 14:28 README.rstdrwxr-xr-x 3 samzonglu staff 96B 2 15 14:28 fastapi_demo-rw-r--r-- 1 samzonglu staff 304B 2 15 14:28 pyproject.tomldrwxr-xr-x 4 samzonglu staff 128B 2 15 14:28 tests➜ fastapi cd fastapi-demo➜ fastapi-demo poetry env use 3.10.2 # 配置项目的虚拟环境
requirements.txt 已存在项目使用poetry
这里会遇到一个问题,已存在的项目基本都已经有了 requirements.txt, 所以 poetry 最好可以直接读取它
poetry add `cat requirements.txt`
将项目依赖导出为 requirements.txt
poetry export --output requirements.txt
