默认情况下poetry install不装dev-dependencies,因开发依赖需显式声明,如poetry install --with dev;若未指定,仅安装[tool.poetry.dependencies]中的包。

poetry install 为什么没装 dev-dependencies?
默认情况下 poetry install 只安装 dependencies 和 group.dev.dependencies,但不会自动启用 --with 选项。如果你的开发依赖(比如 pytest、black)没进环境,不是漏写,而是没显式声明。
- 用
poetry install --with dev显式加载 dev 组(推荐) - 或在
pyproject.toml中把关键 dev 工具加到[tool.poetry.dependencies]下——但这会混入生产依赖,不推荐 - 检查
pyproject.toml是否真把依赖写进了[tool.poetry.group.dev.dependencies],而不是错放在[tool.poetry.dependencies]或拼错 group 名
poetry lock 之后依赖版本还是变了?
poetry lock 不升级包,只重新解析当前 pyproject.toml 中已声明的依赖约束;但如果你改过 pyproject.toml 里的版本号、添加了新包、或删了某个依赖,再运行 poetry lock 就会更新 poetry.lock —— 这是正常行为,不是 bug。
仅使用 Python 将 Claw Code 虚拟化框架与 OpenClaw 集成,提供 184 种工具和 200 多条命令,用于安全分析和代码质量...
- 想锁定当前状态且禁止任何变动:先确认
pyproject.toml没被修改,再执行poetry lock --no-update - 团队协作时,务必提交
poetry.lock到 Git,否则poetry install会按本地解析结果重生成锁文件,导致环境不一致 - 如果发现间接依赖(transitive dependency)版本跳变,大概率是上游包在 patch 版本里悄悄改了兼容性——这时应固定该间接依赖的版本,用
poetry add some-pkg==1.2.3 --lock
多个 Python 版本共存时怎么切环境?
Poetry 默认根据 pyproject.toml 的 requires-python = "^3.9" 自动选最匹配的已安装 Python 解释器;但你经常需要手动指定,尤其测试兼容性时。
- 用
poetry env use 3.8强制创建并切换到 Python 3.8 环境(前提是系统已装该版本) - 验证当前激活环境:
poetry run python --version或poetry shell后执行which python - 注意
virtualenvs.in-project = true配置后,每个项目目录下会生成.venv,避免全局路径污染;但别把它加进 Git ——.venv/应该在.gitignore里 - Windows 用户若遇到
poetry env use找不到 Python,检查是否安装了对应版本的python.exe并被系统 PATH 收录,或用绝对路径如poetry env use C:\Python38\python.exe
从 pip + requirements.txt 迁移要注意什么?
直接把 requirements.txt 内容复制进 pyproject.toml 是常见错误起点——Poetry 不认 == 以外的语法,也不处理注释和条件行(如 platform_system == "Linux")。
- 用
poetry init初始化项目,再逐条执行poetry add pkg-name(自动推断兼容版本),比手工填更安全 - 已有
requirements.txt?可用poetry export -f requirements.txt > requirements-prod.txt导出等效内容,但反向导入不支持一键还原 - 原
requirements-dev.txt对应 Poetry 的--dev参数:poetry add pytest --dev,别全堆进主 dependencies - 旧项目迁移后,务必删掉
requirements.txt和setup.py,否则容易引发配置冲突
poetry add 后 CI 突然失败,查半天才发现是某个间接依赖的次要版本更新破坏了类型提示——这种问题只能靠 poetry lock + 提交 poetry.lock + 定期 poetry show --outdated 主动巡检来兜底。Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










