📢 转载信息
原文链接:https://www.kdnuggets.com/pixi-a-smarter-way-to-manage-python-environments
原文作者:Kanwal Mehreen
作者:Image by Author
# 引言
Python 如今已成为应用最广泛的语言之一,广泛应用于软件开发、数据科学和机器学习领域。其灵活性和丰富的库集合使其成为几乎所有领域开发人员的最爱。然而,处理多个 Python 环境仍然是一个重大的挑战。这时 Pixi 就能派上用场了。它解决了在各个开发层面上的可重现性和可移植性的实际难题。从事机器学习、Web 应用或数据管道的团队可以获得一致的环境、更顺畅的持续集成/持续部署 (CI/CD) 工作流程以及更快的上手速度。凭借其隔离的、面向项目的设计,它为 Python 环境管理带来了一种现代化且可靠的方法。本文将探讨如何使用 Pixi 来管理 Python 环境。
# 为什么环境管理至关重要
在项目初期,使用 venv 或 virtualenv 等工具管理 Python 环境似乎很简单。但是,一旦项目范围扩大,这些方法就会暴露出局限性。您会发现自己为了不同的项目反复重新安装相同的包,这既重复又效率低下。此外,试图让团队成员或生产服务器上的依赖项保持同步非常困难;即使是微小的版本不匹配也可能导致项目失败。共享或复制环境很快就会变得混乱,从而导致一种依赖项在一个机器上运行良好,但在另一台机器上却出现故障的情况。这些环境问题会减慢开发速度、造成挫败感,并引入不必要的差异,从而阻碍生产力。
Pixi 工作流程:从零到可重现的环境 | 图片来源:编辑
# 使用 Pixi 的分步指南
// 1. 安装 Pixi
对于 macOS / Linux:
打开终端并运行:
# 使用 curl curl -fsSL https://pixi.sh/install.sh | sh # 或使用 Homebrew (仅限 macOS) brew install pixi
现在,将 Pixi 添加到您的 PATH:
# 如果使用 zsh (macOS 默认) source ~/.zshrc # 如果使用 bash source ~/.bashrc
对于 Windows:
以管理员身份打开 PowerShell 并运行:
powershell -ExecutionPolicy ByPass -c "irm -useb https://pixi.sh/install.ps1 | iex" # 或使用 winget winget install prefix-dev.pixi
// 2. 初始化您的项目
通过运行以下命令创建新的工作区:
pixi init my_project cd my_project
输出:
✔ Created /Users/kanwal/my_project/pixi.toml
pixi.toml 文件是您项目的配置文件。它告诉 Pixi 如何设置您的环境。
// 3. 配置 pixi.toml
目前您的 pixi.toml 看上去像这样:
[workspace] channels = ["conda-forge"] name = "my_project" platforms = ["osx-arm64"] version = "0.1.0" [tasks] [dependencies]
您需要编辑它以包含 Python 版本和 PyPI 依赖项:
[workspace] name = "my_project" channels = ["conda-forge"] platforms = ["osx-arm64"] version = "0.1.0" [dependencies] python = ">=3.12" [pypi-dependencies] numpy = "*" pandas = "*" matplotlib = "*" [tasks]
让我们来理解一下文件的结构:
- [workspace]: 包含一般项目信息,如项目名称、版本和支持的平台。
- [dependencies]: 在此部分,您指定核心依赖项,例如 Python 版本。
- [pypi-dependencies]: 您在此定义要从 PyPI 安装的 Python 包(如
numpy和pandas)。Pixi 会自动为您创建一个虚拟环境并安装这些包。例如,numpy = "*"会安装 NumPy 的最新兼容版本。 - [tasks]: 您可以在其中定义想要在项目中运行的自定义命令,例如测试脚本或脚本执行。
// 4. 安装您的环境
运行以下命令:
pixi install
Pixi 将使用所有指定的依赖项创建一个虚拟环境。您应该会看到类似以下的确认信息:
✔ The default environment has been installed.
// 5. 激活环境
您可以通过运行一个简单的命令来激活环境:
pixi shell
激活后,您在此 shell 中运行的所有 Python 命令都将使用 Pixi 创建的隔离环境。您的终端提示符将更改,显示您的工作区处于活动状态:
(my_project) kanwal@Kanwals-MacBook-Air my_project %
在此 shell 中,所有已安装的包都可用。您也可以使用以下命令停用环境:
exit
// 6. 添加/更新依赖项
您也可以从命令行添加新包。例如,要添加 SciPy,请运行以下命令:
pixi add scipy
Pixi 将更新环境并确保所有依赖项都兼容。输出将是:
✔ Added scipy >=1.16.3,<2
// 7. 运行您的 Python 脚本
您还可以创建和运行自己的 Python 脚本。创建一个简单的 Python 脚本 my_script.py:
import numpy as np import pandas as pd import matplotlib.pyplot as plt import scipy print("All packages loaded successfully!")
您可以按如下方式运行它:
python my_script.py
这将输出:
All packages loaded successfully!
// 8. 共享您的环境
要共享您的环境,请首先将 pixi.toml 和 pixi.lock 提交到版本控制系统:
git add pixi.toml pixi.lock git commit -m "Add Pixi project configuration and lock file" git push
完成此操作后,您可以在另一台机器上重现该环境:
git clone <your-repo-url> cd <your-project-folder> pixi install
Pixi 将使用 pixi.lock 文件重建完全相同的环境。
# 总结
Pixi 通过将现代依赖管理与 Python 生态系统相结合,提供了一种智能的方法,以提高可重现性、可移植性和速度。由于其简单性和可靠性,Pixi 正成为现代 Python 开发人员工具箱中必不可少的工具。您也可以查阅 Pixi 文档以了解更多信息。
Kanwal Mehreen 是一位机器学习工程师和技术作家,对数据科学以及人工智能与医学的交叉领域抱有深厚的兴趣。她是电子书《利用 ChatGPT 最大化生产力》的合著者。作为 2022 年亚太地区的谷歌一代学者,她倡导多样性和学术卓越。她还获得了 Teradata 技术多样性学者、Mitacs 全球研究学者和哈佛 WeCode 学者等荣誉。Kanwal 是一位坚定的变革倡导者,她创立了 FEMCodes 来赋权女性投身 STEM 领域。
评论区