python项目如何在另一个环境上重新构建项目所需要的运行环境依赖包? 使用的时候边记边加载是个很麻烦的事情,总会出现遗漏的包的问题,这个时候手动安装也很麻烦,不能确定代码报错的需要安装的包是什么版本。这些问题,requirements.txt都可以解决!

生成requirements.txt,有两种方式:

第一种 适用于单虚拟环境的情况

1
pip3 freeze > requirements.txt

为什么只适用于单虚拟环境?因为这种方式,会将环境中的依赖包全都加入,如果使用的全局环境,则下载的所有包在里面,不管是不是当前项目依赖的

当然这种情况并不是我们想要的,当我们使用的是全局环境时,可以使用第二种方法。

第二种 (推荐) 使用pipreqs

github地址为:pipreq

1
2
3
4
5
# 安装
# pip3 install pipreqs -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip3 install pipreqs
# 在当前目录生成
pipreqs . --encoding=utf8 --force

注意--encoding=utf8为使用utf8编码,不然可能会报UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 406: illegal multibyte sequence 的错误。

--force强制执行,当 生成目录下的requirements.txt存在时覆盖。

使用requirements.txt安装依赖的方式:

1
pip install -r requirements.txt

win10下使用pipreqs提示不是内部或外部命令

检查:

1、重新执行pip install pipreqs确认pipreqs已成功安装

2、确认python环境变量已配置

3、安装pipreqs时,控制台会有一处Warning

解决办法

通过pip安装的库不在python安装目录下,并且该路径没有配置进环境变量!

所以需要把Warning中提到的路径加入到环境变量

requirements.txt使用示例

注:文件中不可写中文【包括注释】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 指定一个版本
project == 1.3

# 指定版本区间
project >=1.2,<2.0

# 使用该版本的兼容发行版本
project~=1.4.2

# 6.0 以后的特性,可以指定环境

# Python 版本小于 2.7 时安装 5.4 版本
project == 5.4; python_version < '2.7'

# 仅在 Windows 环境下安装
project; sys_platform == 'win32'