
如何用 poetry sync 让环境与 poetry.lock 保持一致并清理多余包【免费下载链接】poetryPython packaging and dependency management made easy项目地址: https://gitcode.com/GitHub_Trending/po/poetry当你克隆项目、切换分支或调整过依赖之后Poetry 管理的虚拟环境里可能残留着poetry.lock中已经不存在的包。poetry install只会按锁文件安装/升级包不会清理这些未跟踪的包而poetry sync的作用就是让环境只保留poetry.lock中声明的依赖并移除多余的内容。官方文档明确建议在常规的虚拟环境场景下优先使用poetry sync而不是poetry install以避免遗留未跟踪的过时包。适用前提项目在 Poetry 管理的虚拟环境中运行这是默认情况。如果设置过virtualenvs.create false装到系统环境或virtualenvs.options.system-site-packages true虚拟环境可见系统 site-packagespoetry sync通常无法正常工作这两种情况应继续使用poetry install见 docs/cli.md install 章节。项目目录下有poetry.lock文件时sync直接使用其中的精确版本不重新解析如果没有锁文件sync会先解析依赖并创建poetry.lock。如果pyproject.toml与poetry.lock不同步执行安装类命令时 Poetry 会显示Warning见 docs/basic-usage.md。先处理锁文件一致性问题再同步环境。主路径执行 poetry sync在项目根目录执行poetry sync命令行为与poetry install类似额外区别是会删除环境里所有未被锁文件跟踪的包。文档给出的示例输出如下文档示例your-package-name与版本号为占位示意$ poetry sync Installing dependencies from lock file No dependencies to install or update - Installing your-package-name (x.x.x)注意默认情况下sync每次都会安装当前项目本身。如果只想同步第三方依赖、跳过项目本身用--no-rootpoetry sync --no-root想先预览将会发生哪些安装/卸载操作而不实际执行用--dry-run会自动启用-v详细输出poetry sync --dry-run--dry-run是执行前确认“哪些包会被清理”的安全方式建议在不确定的环境如共享机器上先跑一遍。按依赖组同步sync支持与install相同的依赖组选项依赖组的定义见 docs/managing-dependencies.md 的 Dependency groups 一节# 排除 test 和 docs 组 poetry sync --without test,docs # 额外包含可选组 test 和 docs poetry sync --with test,docs # 安装所有组包括可选组 poetry sync --all-groups # 只同步指定组 poetry sync --only test,docs # 只安装项目本身不装任何依赖 poetry sync --only-root规则与install一致指定--only时--with和--without会被忽略--all-groups与--only、--with、--without冲突不能同时使用。extras 的行为与install不同sync下任何未被选中的 extras 都会被移除install则是保留但不安装poetry sync --extras mysql pgsql poetry sync -E mysql -E pgsql poetry sync --all-extras # 未指定的 extras例如 C会被移除 poetry sync --extras A B # C is removed因此用sync时如果某些 extras 的依赖仍需要保留在环境里必须显式通过-E/--extras或--all-extras指定。可选分支CI 与字节码编译跳过所有目录路径依赖包括传递的目录依赖poetry sync --no-directory文档说明这主要用于 CI 缓存或构建 Docker 镜像的场景相关背景见 docs/faq.md 中关于 Docker 缓存的条目。安装时将 Python 源码编译为字节码加快后续首次执行默认不编译poetry sync --compile验证结果同步完成后用以下文档中给出的命令核对确认锁文件与 pyproject.toml 一致排除“锁文件过期导致同步结果不符合预期”的情况poetry checkcheck校验pyproject.toml内容与poetry.lock的一致性发现问题会给出详细报告--lock选项用于验证当前pyproject.toml是否存在对应锁文件见 docs/cli.md check 章节。查看环境中实际安装的包确认残留包已被清除、锁文件中的包都在poetry show # 只看顶层显式声明的依赖 poetry show --top-level判断标准即文档对同步的定义poetry.lock中锁定的依赖是环境中唯一存在的依赖多余内容被移除。限制与注意事项install命令的--sync选项已弃用文档标注 “Deprecated, usepoetry syncinstead”。新脚本应直接调用poetry sync。poetry self sync是另一个命令它同步的是 Poetry 自身运行时环境插件等的包与项目环境同步无关不要混用。只同步环境不会更新版本。若要让依赖升到约束内的最新版本并刷新锁文件需先用poetry update再考虑poetry sync。多阶段 Docker 构建中若需要在不同构建阶段分层安装可选组且不互相删除文档建议的是不带同步的poetry installLayering optional groups见 docs/managing-dependencies.mdsync的移除行为不适用于这种“分层叠加”场景。【免费下载链接】poetryPython packaging and dependency management made easy项目地址: https://gitcode.com/GitHub_Trending/po/poetry创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考