自动创建 Python 的 requirements.txt 文件

liftword4周前 (04-28)技术文章21

技术背景

在 Python 开发中,requirements.txt 文件用于记录项目所依赖的第三方库及其版本,方便在不同环境中部署项目。然而,当从 GitHub 下载 Python 源代码时,有时会缺少该文件,手动创建既耗时又容易出错。因此,自动生成 requirements.txt 文件显得尤为重要。

实现步骤

方法一:使用 pipreqs

  1. 安装 pipreqs
  2. pip install pipreqs
  3. 生成 requirements.txt
  4. pipreqs /path/to/project
  5. 若项目路径为当前目录,可使用:
  6. pipreqs .
  7. 若遇到编码问题,可指定编码:
  8. pipreqs --encoding utf-8 /path/to/project

方法二:使用 pip freeze

  1. 创建虚拟环境(可选但推荐)
  2. Python 3:
  3. python3 -m venv .venv
    source .venv/bin/activate
  4. Python 2:
  5. pip install virtualenv
    virtualenv <myenvname>
    source <myenvname>/bin/activate
  6. 安装项目依赖
  7. pip install <dependencies name>
  8. 生成 requirements.txt
  9. Python 3:
  10. pip3 freeze > requirements.txt
  11. Python 2:
  12. pip freeze > requirements.txt

方法三:结合 pipreqs 和 pip-tools

  1. 安装工具
  2. pip3 install pipreqs
    pip3 install pip-tools
  3. 生成 requirements.in 和 requirements.txt
  4. pipreqs --savepath=requirements.in && pip-compile

方法四:使用 Anaconda

  1. 生成 requirements.txt
  2. conda list -e > requirements.txt
  3. 若遇到错误,使用 .yml 选项
  4. conda env export > <environment-name>.yml
  5. 创建新环境
  6. conda env create -f <environment-name>.yml

核心代码

使用 pipreqs 生成 requirements.txt

pip install pipreqs
pipreqs /path/to/project

使用 pip freeze 生成 requirements.txt

python3 -m venv .venv
source .venv/bin/activate
pip install <dependencies name>
pip3 freeze > requirements.txt

结合 pipreqs 和 pip-tools 生成 requirements.txt

pip3 install pipreqs
pip3 install pip-tools
pipreqs --savepath=requirements.in && pip-compile

最佳实践

  • 使用虚拟环境:避免全局环境中的无关依赖被包含在 requirements.txt 中。
  • 定期更新 requirements.txt:在添加或删除依赖时,及时更新该文件。
  • 使用固定版本号:确保项目在不同环境中的一致性。

常见问题

pipreqs 生成的文件不完整

可能是由于项目中存在编码问题或某些依赖未被正确识别。可尝试指定编码或手动检查并添加缺失的依赖。

pip freeze 包含了无关依赖

可使用虚拟环境,只在虚拟环境中安装项目所需的依赖,然后生成 requirements.txt

pipreqs 和 pip-tools 结合使用时在 Windows PowerShell 中报错

可使用 ( pipreqs --savepath=requirements.in ) -and (pip-compile) 替代。

相关文章

写脚本不一定要学Python,C#何尝不能写脚本?txt都能跑!

用过C#的都知道C#是一种强大的编程语言,基本什么都能做。而他的优雅性,让我学了C#之后就不再愿意转投其它语言了。C#只是输在没有生态!对此,前python同事跟我争论不休,说C#没法写脚本,再简单也...

Python画圣诞树,这波操作让我女友非常开心

文章目录1.方块圣诞树2.线条圣诞树3.豪华圣诞树这篇文章主要介绍了使用Python画了一棵圣诞树的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友...

如何用python的requests来下载网页内容保存到txt

如何用python的requests来下载网页内容保存到txtimport requests # 定义目标网页和保存路径 url = "http://www.5a8.com" fil...

python用requests BeautifulSoup下载网页到txt并去掉html标记

python用requests BeautifulSoup下载网页到txt并去掉html标记import requests from bs4 import BeautifulSoup url = &...

python原始套接字socket下载http网页文件到txt

python原始套接字socket下载http网页文件到txtimport socket def download_webpage(url, output_file): try:...