【Python】使用 requirements.txt 和 pip 打包批量安装

文章介绍了如何使用pip的批量安装选项-rrequirements.txt来管理Python包。requirements.txt文件用于指定包和版本,pipfreeze可以导出当前环境的包列表,便于在其他环境中复现相同的包配置。通过pipinstall-rrequirements.txt可以在新环境中安装相同版本的包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们程序越来越复杂,使用pip管理Python包(库)。我们可以方便的使用配置文件 requirements.txt 批量安装指定版本的指定包。

本文对以下内容进行说明:

  • pip 的批量安装选项: -r requirements.txt
  • 配置文件 requirements.txt 的写法
  • 生成当前环境的requirements.txt配置文件: pip freeze

1. pip 的批量安装选项:-r requirements.txt

以下命令根据配置文件 requirements.txt 批量安装包。

$ pip install -r requirements.txt

配置文件名是任意的,但经常使用 requirements.txt 这个名字。
requirements.txt 放在运行命令的目录中。如果它在另一个目录中,请指定当前目录的绝对路径或相对路径。

2. 配置文件requirements.txt怎么写

下面是一个典型的requirements.txt文件的例子

###### 下面的是不需要版本要求的 ######`
nose
nose-cov
beautifulsoup4

###### 进行版本要求的例子 ######`
docopt == 0.6.1         # 必须严格的 0.6.1 的版本
keyring >= 4.1.1        # 最小的版本 4.1.1
coverage != 3.5         # 版本排除,只要不是 3.5 都可以
Mopidy-Dirble ~= 1.1    # 兼容版本。与>=1.1,==1.* 相同

仔细看上面的代码,我们有如下规律

  • 与 Python 代码一样, # 之后的任何内容都是注释。
  • 在实际使用时,可以使用 ==>>=<<= 等指定版本。如果省略版本说明,将安装最新版本。

另外,如果需要可以用 AND 指定两个条件,方法是用逗号 , 分隔它们。在以下示例中,将安装高于 1.0 AND 低于 2.0 的版本。

package >= 1.0, <=2.0

3. 导出当前环境配置文件:pip freeze

pip freeze 命令将当前环境安装的包和版本以配置文件的形式输出,可以和 pip install -r 一起使用。

$ pip freeze
agate==1.6.0
agate-dbf==0.2.0
agate-excel==0.2.1
agate-sql==0.5.2

因此,如果将 pip freeze 输出到带有重定向 > 的文件,则可以使用该文件在单独的环境中安装与原始环境相同版本的包。

田辛老师在复制环境的时候,经常这样做:

第一步,生成requirements.txt文件

$ pip freeze > requirements.txt

第二步,在新的机器上

$ pip install -r requirements.txt
### 如何将 Conda 环境中安装的包列表导出到 `requirements.txt` 为了实现从 Conda 环境生成 `requirements.txt` 文件的目标,可以通过以下方法完成: #### 方法一:结合 `conda list` `pip freeze` Conda 提供了命令来列出当前环境中的所有已安装包及其版本信息。通过这种方式可以获取完整的依赖项并将其转换为适合 `pip` 的格式。 1. 使用 `conda list --explicit` 列出显式依赖关系,并保存至临时文件: ```bash conda list --explicit > spec-file.txt ``` 2. 如果目标是生成适用于 `pip` 的 `requirements.txt` 文件,则需先确认环境中已经安装了 `pip`[^2]: ```bash conda install pip ``` 3. 接下来运行 `pip freeze` 将 Python 包以标准格式写入 `requirements.txt` 文件: ```bash pip freeze > requirements.txt ``` 此操作会提取当前 Conda 环境下由 `pip` 安装的所有包以及它们的具体版本号[^3]。 #### 方法二:仅使用 Pip Freeze 导出 如果只需要记录那些通过 `pip` 安装的部分而非整个 Conda 环境状态,可以直接执行如下指令: ```bash pip freeze > requirements.txt ``` 这一步骤简单明了,但它不会包含任何非 PyPI 资源上的软件包或者原生 Conda 渠道分发的内容[^5]。 #### 注意事项 尽管上述两种方式都能有效创建一个基于现有条件下的需求文档(`requirements.txt`) ,但需要注意的是这两种途径均无法完全保留原始 Conda 配置细节(比如编译器选项、特定平台库支持等),因此当尝试重建相同的工作区时可能会遇到兼容性挑战。 ```python import subprocess def generate_requirements_txt(): try: result = subprocess.run(['pip', 'freeze'], stdout=subprocess.PIPE, text=True) with open('requirements.txt', mode='w') as file: file.write(result.stdout) print("Successfully generated requirements.txt.") except Exception as e: print(f"An error occurred while generating the requirements file: {e}") generate_requirements_txt() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田辛 | 田豆芽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值