跳转至

从 Poetry 切换到 Pixi#

欢迎阅读本指南,帮助你从 poetry 过渡到 pixi。 本文档比较了这些工具之间的关键命令和概念,突出了 pixi 独特的环境和包管理方法。 使用 pixi,你将体验到类似于 poetry 的基于 workspace 的工作流程,同时包含 conda 生态系统,并允许轻松分享你的工作。

为什么选择 Pixi?#

Poetry 可能是 Python 生态系统中最接近 Pixi 的工具,就 workspace 管理而言。 在 PyPI 生态系统之上,pixi 增加了 conda 生态系统的力量,允许更灵活和强大的环境管理。

快速了解差异#

任务 Poetry Pixi
创建环境 poetry new myenv pixi init myenv
运行任务 poetry run which python pixi run which python pixi 使用内置的跨平台 shell 运行,而 poetry 使用你的 shell。
安装包 poetry add numpy pixi add numpy 添加 conda 变体。 pixi add --pypi numpy 添加 PyPI 变体。
卸载包 poetry remove numpy pixi remove numpy 移除 conda 变体。 pixi remove --pypi numpy 移除 PyPI 变体。
构建包 poetry build 我们尚未实现包构建和发布
发布包 poetry publish 我们尚未实现包构建和发布
读取 pyproject.toml [tool.poetry] [tool.pixi]
定义依赖 [tool.poetry.dependencies] [tool.pixi.dependencies] 用于 conda,[tool.pixi.pypi-dependencies][project.dependencies] 用于 PyPI 依赖
依赖定义 - numpy = "^1.2.3"
- numpy = "~1.2.3"
- numpy = "*"
- numpy = ">=1.2.3 <2.0.0"
- numpy = ">=1.2.3 <1.3.0"
- numpy = "*"
锁文件 poetry.lock pixi.lock
环境目录 ~/.cache/pypoetry/virtualenvs/myenv ./.pixi 默认为 workspace 目录,使用 detached-environments 可以移动它

在我的 workspace 中同时支持 poetrypixi#

你可以允许用户在同一个 workspace 中使用 poetrypixi,它们不会触及彼此的配置或系统部分。 最好复制依赖项,基本上将 tool.poetry.dependencies 的精确副本复制到 tool.pixi.pypi-dependencies。 确保 python 只在 tool.pixi.dependencies 中定义,而不是在 tool.pixi.pypi-dependencies 中。

混合 pixipoetry

可以在 pixi 环境中使用 poetry,但不建议这样做。 Pixi 以不同于 poetry 的方式支持 PyPI 依赖,混合它们可能导致意外行为。 因为一次只能使用一个包管理器,最好坚持使用一个。

如果在 Pixi workspace 之上使用 poetry,你将始终需要在 pixi 环境之后安装 poetry 环境。 让 pixi 处理 pythonpoetry 的安装。