问题
当我们使用
pip freeze > requirements.txt
语句时,会把当前Python环境所有安装的包都写入到requirements文件中。
事实上,对于单独的一些Python项目,我们仅仅需要项目级别所需的包。如果在Linux系统中,我们可以通过带sed的pip freeze命令完成这个工作,比如:
pip freeze > requirements.txt
pip freeze -r requirements.txt
pip freeze -q -r requirements.txt | sed '/freeze/,$ d' > requirements-froze.txt
但使用起来终究是很麻烦的。
解决办法
使用pipreqs,能很好地解决这个问题。安装命令如下:
pip install pipreqs
按照参考资料里提及的方式,在当前Python项目目录下运行pipreqs > requirements.txt命令,则可将当前Python项目下的依赖包写入到requirements.txt中。
然而,在Windows平台上,我遇到这样的问题,执行pipreqs > requirements.txt命令后,产生的文本文件却是空的。
于是,我采用指定目录的方式执行:
pipreqs "./"
经过一定时间的处理,pipreqs识别出存在的依赖,并写入到requirements.txt文件中:
经测试可正常安装,如需考虑编码问题,比如说需要强行制定utf-8编码,可以使用如下命令:
pipreqs --encoding utf-8 "./"
参考资料:
https://stackoverflow.com/questions/32390291/pip-freeze-for-only-project-requirements