将 pipenv 项目迁移到 uv 的核心做法是:使用 uv pip install 命令直接读取现有的 pipfile.lock 文件,将其中的依赖项安装到本地环境中并自动生成标准的 requirements.txt 文件。随后,你可以利用 uv 的虚拟环境管理功能创建新的环境,并将生成的 requirements.txt 作为依赖源进行锁定和安装。这一过程跳过了对 pipfile 解析器的依赖,直接基于已确定的依赖版本进行转换,确保了依赖关系的一致性。

如何从 Pipfile.lock 生成标准 requirements.txt
通过 uv pip install -r Pipfile.lock 命令可以直接解析锁文件并输出兼容的文本格式。该命令会读取 Pipfile.lock 中定义的精确哈希值和版本号,并在终端打印出符合 PEP 508 规范的依赖列表。开发者可以将此输出重定向到一个新的 requirements.txt 文件中,从而获得一个被 uv 原生支持的依赖描述文件。这种方法的优势在于它保留了 Pipenv 已经验证过的依赖完整性,避免了重新解析依赖树可能带来的版本冲突。

uv pip install -r Pipfile.lock > requirements.txt
执行上述命令后,生成的 requirements.txt 将包含所有在 Pipfile.lock 中列出的包及其精确版本。例如,如果 Pipfile.lock 中指定了 requests==2.31.0,生成的文件也会保持相同的格式。你可以使用文本编辑器打开该文件,检查是否包含了所有必要的生产环境和开发环境依赖。如果需要区分环境,可以手动编辑文件,或者在后续步骤中使用 uv 的环境隔离功能来分别管理不同场景的依赖。
如何在 uv 中创建并激活虚拟环境
使用 uv venv 命令可以快速创建一个与 Pipenv 等效的虚拟环境。该命令会在项目根目录下生成一个 .venv 目录,其中包含了独立的 Python 解释器和包隔离空间。创建完成后,你需要根据操作系统激活该环境,以便后续的包安装操作都在这个隔离的空间内进行。这一步骤替代了 Pipenv 中 pipenv shell 或 pipenv --venv 的功能,提供了更轻量级的环境管理体验。

uv venv source .venv/bin/activate # Linux/macOS .venv\Scripts\activate # Windows
激活环境后,当前的命令行会话将被配置为使用新创建的虚拟环境。你可以通过运行 python --version 或 which python 来验证当前使用的 Python 解释器路径是否正确指向了 .venv 目录。此时,任何通过 uv pip install 安装的包都将被限制在此环境中,不会影响系统全局的 Python 安装或其他项目。这种隔离机制确保了项目依赖的纯净性,是现代化 Python 开发的标准实践。
如何将生成的 requirements.txt 锁定到 uv.lock
在拥有 requirements.txt 和激活的虚拟环境后,使用 uv pip compile 或 uv sync 可以将依赖关系转换为 uv 原生的 uv.lock 文件。虽然 uv 通常与 pyproject.toml 配合使用,但它也支持直接从 requirements.txt 生成锁文件。这个过程会重新计算依赖树的传递依赖,确保所有间接依赖都被明确锁定,从而提供比 Pipenv 更快的安装速度和更可靠的复现能力。最终,你将得到一个由 uv 管理的完整项目结构,包括 uv.lock 和 .venv,标志着迁移的完成。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











