在查看别人的 Python 项目时,经常会看到一个 requirements.txt
文件,里面记录了当前程序的所有依赖包及其精确版本号。这个文件有点类似与 Rails 的 Gemfile。其作用是用来在另一台 PC 上重新构建项目所需要的运行环境依赖。
requirements.txt
用来记录项目所有的依赖包和版本号,只需要一个简单的 pip 命令就能完成。
进入到需要导出所有 Python 库的那个环境,然后使用那个环境下的 pip :
pip freeze > requirements.txt
requirement.txt 文件默认输出在桌面。
注:查看源文件,pip 的 freeze 命令用于生成将当前项目的 pip 类库列表生成 requirements.txt 文件。
然后就可以用:
pip install -r requirements.txt
来一次性安装 requirements.txt
里面所有的依赖包,真是非常方便。
requirements.txt
文件类似如下:
Django=1.3.1
South>=0.7
django-debug-toolbar
将模块放在一个列表中,每一行只有一项。
一起开发项目的时候总是要搭建环境和部署环境的,这个时候必须得有个 python 第三方包的 list,一般都叫做requirements.txt。 如果一个项目使用时 virtualenv 环境,还好办
pip freeze
就可以解决,但是如果一个项目的依赖 list 没有维护,而且又是环境混用,那就不好整理的呀,不过,这里安利一个工具 pipreqs,可以自动根据源码生成requirements.txt
。
pip freeze 命令:
pip freeze > requirements.txt
这种方式配合 virtualenv 才好使,否则把整个环境中的包都列出来了。
pipreqs 这个工具的好处是可以通过对项目目录的扫描,自动发现使用了那些类库,自动生成依赖清单。缺点是可能会有些偏差,需要检查并自己调整下。
pipreqs 的安装:pip install pipreqs
使用方式也比较简单,直接进入项目下然后使用 pipreqs ./
命令即可,如:
pipreqs ./
如果是 Windows 系统,会报编码错误 (UnicodeDecodeError: 'gbk' codec can't decode byte 0xa8 in position 24: illegal multibyte sequence) 。这是由于编码问题所导致的,加上 encoding 参数即可,如下:
pipreqs ./ --encoding=utf-8
生成 requirements.txt
文件后,可以根据这个文件下载所有的依赖。
pip install -r requriements.txt
附:
详细用法:
pipreqs [options] <path>
选项:
--use-local仅使用本地包信息而不是查询PyPI
--pypi-server <url>使用自定义PyPi服务器
--proxy <url>使用Proxy,参数将传递给请求库。你也可以设置
终端中的环境参数:
$ export HTTP_PROXY =“http://10.10.1.10:3128”
$ export HTTPS_PROXY =“https://10.10.1.10:1080”
--debug打印调试信息
--ignore <dirs> ...忽略额外的目录
--encoding <charset>使用编码参数打开文件
--savepath <file>保存给定文件中的需求列表
--print输出标准输出中的需求列表
--force覆盖现有的requirements.txt
--diff <file>将requirements.txt中的模块与项目导入进行比较。
--clean <file>通过删除未在项目中导入的模块来清理requirements.txt。