像 npm 那样使用 pip 自动生成 requirements.txt 文件

前言

希望能像 npm install 那样自动的将安装的包加入到 requirements.txt 文件中,但是同时又不希望把子依赖加入其中

虽然我们能通过 pip freeze > requirements.txt 将依赖导出,但是这样导出的依赖,会把包的其他子依赖也导出,导致重新安装的时候总是提示包的版本不对

解决

通过 bashalias 或者函数来解决,在.zshrc 中添加以下函数

1
2
3
function pip-install {
pip install $1 && pip freeze | grep -w "${1}=" >> requirements.txt
}

使用

1
pip-install sanic

效果

1
2
cat requirements.txt
sanic==21.6.2

从上面文件可以看出 requirements.txt 中并没有 sanic 的其他子依赖,至于 sanic 的其他子依赖会在安装 sanic 时自动安装就不用管它了

最后

最后我们在其他地方使用项目的时候只需要安装 requirements.txt 中的包就行了

1
pip install -r requirements.txt