背景

为了使python项目易于复现,需要考虑到项目中依赖包的版本。本文介绍所了解的两种自动生成 requirements.txt 的方法

生成依赖

pip freeze > requirements.txt

适用于创建了虚拟环境venv的项目。

对于没有创建虚拟环境的项目,这种方法会将本地所有安装的库都列入 requirements.txt 中。

详情参考:https://github.com/bndr/pipreqs

pipreqs

pipreqs 说明文档

  1. 安装
    pip install pipreqs
  2. 使用
    pipreqs ./
    注:出现编码错误时使用 pipreqs ./ --encoding utf-8

问题:如果出现 pip 安装 read timed out 问题,可以延长 pip 默认安装时间:
pip --default-timeout=100 install pipreqs

参考:https://blog.csdn.net/qq_38316655/article/details/81463917


安装依赖

如果可以使用外网,可以直接使用命令 pip install -r requirements.txt 安装。

麻烦的是在离线环境中安装所有依赖包;

  • 第一步:下载所有包及其依赖
    1
    2
    3
    $ pip download -d DIR -r requirements.txt 
    或者
    $ pip wheel -w DIR -r requirements.txt
  • 第二步:离线安装所有依赖包
    1
    $ pip3 install --no-index --find-links=DIR -r requirements.txt

注意:

  • 注意包版本区别,例如 python 3.6/python 3.7、平台 macos/linux/windows;
  • 每个依赖的依赖包;

pip download 命令指定系统架构和 python 版本:

1
2
3
4
5
6
7
$ pip download \
--only-binary=:all: \ # 只下载二进制 package(即 wheel 或 egg)
--platform linux_x86_64 \ # 说明是 linux 64 位架构
--python-version 27 \ # Python 2.7
--implementation cp \ # cpython,一般都是这个
--abi cp27mu
tensorflow # 要下载的 package 名

联系作者