Skip to content

Poetry 命令详解 ​

Python 现代依赖管理工具


📋 目录 ​


1️⃣ 项目生命周期管理 ​

命令作用典型使用场景与 pip/venv 对比
poetry new my-project创建一个新项目的标准目录结构当你从零开始一个Python项目时替代手动创建目录和文件
poetry init在现有项目中交互式地生成 pyproject.toml 文件当你有一个旧项目,想改用Poetry管理时替代手动编写 requirements.txt
poetry install安装 pyproject.toml 中的所有依赖当你刚克隆一个Poetry项目,或需要同步队友添加的依赖时相当于 pip install -r requirements.txt,但更智能,会自动创建虚拟环境
poetry update更新所有依赖到最新版本,并更新 poetry.lock 文件定期批量升级项目依赖包相当于 pip install --upgrade 批量操作
poetry shell激活当前项目的虚拟环境你想在项目环境下连续运行多个命令相当于 venv\Scripts\activate (Windows) 或 source venv/bin/activate (Linux/macOS)
poetry run <command>在虚拟环境中运行单个命令,无需先激活环境运行脚本 poetry run python app.py 或执行测试 poetry run pytest无需手动激活环境,非常方便
poetry env info查看当前项目虚拟环境的详细信息(路径、Python版本等)当你在IDE(如VSCode)中需要手动指定解释器路径时pip 无此功能

2️⃣ 依赖管理 ​

命令作用典型使用场景与 pip/venv 对比
poetry add requests添加一个依赖到生产环境并安装你的项目需要用 requests 库相当于 pip install requests,同时自动更新配置文件
poetry add pytest --dev添加一个依赖到开发环境(如测试、文档工具)你只想在开发时用 pytest,打包到生产环境时不包含它相当于维护两个 requirements.txt 文件
poetry add pendulum@^2.0.5添加指定版本的依赖你需要 pendulum 库的2.0.5及以上(但低于3.0)版本pip install pendulum>=2.0.5,<3.0.0
poetry remove requests移除一个依赖项目不再需要 requests 库pip uninstall requests,但poetry remove会同时移除孤儿子依赖,更干净
poetry show列出所有已安装的依赖你想快速查看当前项目装了哪些包相当于 pip list
poetry show --tree以树状图形式展示依赖关系排查复杂的依赖冲突时,直观地看到是谁引用了谁pip 需要安装第三方包(如 pipdeptree)才能实现

3️⃣ 打包与发布 ​

命令作用典型使用场景与 pip/venv 对比
poetry build将项目打包成分发包(源码包和wheel包)你写了一个库,准备分享给别人用替代 python setup.py sdist bdist_wheel 等复杂命令
poetry publish将打好的包发布到PyPI把你的库正式发布到官方仓库,让全世界都能用 pip install 安装替代 twine upload dist/*

4️⃣ 配置与维护 ​

命令作用典型使用场景与 pip/venv 对比
poetry config --list查看当前的配置你想知道虚拟环境被创建在了哪里pip 无此功能
poetry config virtualenvs.in-project true配置虚拟环境创建在项目目录内(生成 .venv 文件夹)你喜欢把环境放在项目根目录,方便管理和删除python -m venv .venv
poetry check检查 pyproject.toml 文件是否有错误手动编辑配置文件后,验证一下格式是否正确pip 无此功能
poetry self update更新 Poetry 自身到最新版本官方发布了新功能,你想体验一下pip install --upgrade poetry

5️⃣ 核心工作流示例 ​

1. 接手一个 Poetry 项目 ​

bash
# 克隆项目
git clone <your-project-url>
cd your-project

# 一条命令,自动创建虚拟环境并安装所有依赖
poetry install

# 激活环境,开始开发
poetry shell

2. 启动一个全新项目 ​

bash
# 创建新项目
poetry new my-awesome-tool
cd my-awesome-tool

# 添加核心依赖
poetry add requests beautifulsoup4

# 添加开发依赖
poetry add --dev pytest black

# ... 编写代码 ...

# 运行你的程序
poetry run python my_awesome_tool/main.py

3. 部署应用到服务器 ​

bash
# 打包应用
poetry build

# 上传到服务器
scp dist/* user@server:~/my-awesome-tool/

# 在服务器上安装依赖并运行
ssh user@server
cd my-awesome-tool
poetry install --no-dev
poetry run python my_awesome_tool/main.py

📝 常用命令速记口诀 ​

操作命令
新项目poetry new
加依赖poetry add
删依赖poetry remove
装全部poetry install
跑命令poetry run
进环境poetry shell
看列表poetry show
打压缩poetry build
发上去poetry publish

6️⃣ 配置文件说明 ​

pyproject.toml(项目声明文件) ​

bash
[tool.poetry]
name = "my-project"
version = "0.1.0"
description = "项目描述"
authors = ["Your Name <email@example.com>"]

[tool.poetry.dependencies]
python = "^3.8"
requests = "^2.28.0"
pendulum = "^2.1.0"

[tool.poetry.dev-dependencies]
pytest = "^7.0.0"
black = "^22.0.0"

poetry.lock(版本锁定文件) ​

  • 记录了所有依赖的精确版本号
  • 必须提交到版本控制系统(git)
  • 确保所有人、所有环境使用完全一致的依赖

更新时间:2026-03-17

评论

正在加载评论…