使用pipreqs保存第三方依赖
如果使用pip freeze > requirements.txt
的话我个人理解会把pip list
可以看到的所有包全都写进文件中,哪怕代码中没有用到这些包也会写入到依赖文件中。
如果我们只想像npm那样保存个依赖时用pipenv
这种重量级工具又有点大材小用了,所以pipreqs
这个工具就很适合解决这个问题。
除了网上说的要加--encoding=utf8
之外,我自己在使用的时候遇到一个向一个无法连接的网络尝试了一个套接字操作
这么个错误,在查询了文档之后写成下列的形式就可以了:
pipreqs --encoding=utf8 --use-local
默认情况下,pipreqs
会在命令行所在文件夹下生成requirements.txt
,而如果网不好的话可能访问不了pypi.org,所以加上--use-local
指定只查询本地的包而不用访问pypi。
但要注意,如果有些包在pypi上注册的包名不是引入到代码中的包名时依赖解析会出错。比如,一个包下载时是pip install a
,但是在代码里引用却是import b
,这时pipreqs会把b当作这个包名去保存下来,不知道这个跟我用本地包有没有关系。