2024年 导出环境依赖
一、前言
有时候需要导出环境依赖,遂记录一下这个短短的步骤
二、具体步骤
1、使用pip进行安装和管理环境
- 安装导出依赖的库pipreqs
pip install pipreqs
- 将环境依赖项导出到当前目录的requirements.txt文件,编码格式用utf-8
pipreqs ./ --encoding=utf8
- 结果如下
2、使用pipenv安装和管理环境
在使用vercel的时候,pip不支持限定python版本,这时候就需要用到pipenv进行管理了
- 安装导出依赖的库pipenv
pip install pipenv
-
导出依赖pipenv lock
-
依据pipfile进行安装环境
在修改了 Pipfile 后,使用 Pipenv 更新项目的依赖。可以通过以下命令来安装 Pipfile 中指定的依赖:
pipenv install
安装完这个虚拟环境后运行 pipenv shell 激活环境,然后再在这个环境下运行
三、requirements.txt 和pipfile管理关系差异
Pipfile
和 requirements.txt
都是 Python 项目中用于管理依赖的文件,但它们之间存在一些关键区别,主要体现在格式、功能和使用的工具上。
1. 格式和工具
-
requirements.txt:这是一个纯文本文件,列出了项目所需的所有包及其版本号(可选指定)。它通常与
pip
工具一起使用,例如使用pip install -r requirements.txt
命令来安装依赖。 -
Pipfile:这是一个使用 TOML(Tom’s Obvious, Minimal Language)格式的文件,它提供了一种更为结构化的方式来声明项目所需的包,包括版本、来源等信息。
Pipfile
通常与Pipenv
工具一起使用,后者旨在提供一个更加完善的包管理工作流,包括自动创建和管理虚拟环境。
2. 功能
-
requirements.txt 主要关注于列出依赖,但不直接处理虚拟环境。用户需要手动创建和管理虚拟环境。
-
Pipfile 和
Pipenv
提供了更全面的依赖管理解决方案,不仅包括依赖管理还包括虚拟环境的自动创建和管理。Pipfile
分为两个主要部分:[packages]
用于生产环境的依赖,[dev-packages]
用于开发环境的依赖。此外,Pipfile.lock
文件(由Pipenv
自动生成)确保了依赖的一致性,通过锁定依赖的具体版本来避免未来可能出现的兼容性问题。
3. 使用场景
-
requirements.txt 由于其简单性,适用于需要快速共享依赖列表的场景,或是在自动化脚本中安装依赖时。
-
Pipfile 和
Pipenv
适用于需要更全面依赖管理的项目,尤其是当项目依赖特定版本的包,或者开发和生产环境依赖不同时。Pipenv
的使用提高了项目的可维护性和依赖管理的准确性。
总的来说,Pipfile
和 Pipenv
提供了一种更现代化的依赖管理方式,特别是对于较大的项目或是多人协作的项目,它们可以提供更好的依赖版本控制和环境隔离。而 requirements.txt
由于其简单和广泛的支持,仍然是许多项目和情景下的首选。