使用Pip Tools生成好看的依赖文件

项目地址: https://pypi.org/project/pip-tools/ pip-tools 是一个命令行工具集合,主要有两个命令: pip-compile,pip-sync,现在主要用的是 pip-compile 在写python项目的时候,我们通常会依赖到其他的包,比如写一个后端的服务,我们可能会依赖到flask/pymysql这些基础的包,随着开发的进行,我们还可能会引入更多的依赖。 这些python依赖包构成了一个完整的服务,开发完成后,我们将这些服务部署到服务器上时,只需要安装好对应的依赖,便可以直接运行服务。 但是,如果我们不将生产环境的依赖固定下来的话,整个服务可能会因为某一次服务更新,其中某个的更新带来的不兼容导致整个服务崩溃。比如pyjwt,在1.7.1版本之前生成的jwt-token是一个bytes类型,我们将其转换成为字符串需要使用到decode()方法。但是在更新到2.0之后,生成的jwt-token是一个字符串类型,如果我们对其再调用decode方法的话,就会发生错误。 这就显现出了固定依赖的重要性了。 通常,固定依赖,我们可以在开发环境使用 pip freeze命令,直接将开发环境的所有版本固定下来到一个 requirements.txt 文件里面,这是懒人做法,当然也很有效。但是文件里面会带有一些系统的依赖版本,比如urllib 之类的,这些我们是不需要再次安装的,所以,如果这些依赖出现在 requirements.txt 文件里面,就会显得不那么干净。 这时,我们可以使用 pip-tools里面的 pip-compile 工具,对依赖进行编译,生成一份漂亮的依赖文件。 直接生成最新依赖 首先,我们将项目中直接依赖的包写到requirements.in文件里面 requirements.in pymysql flask 使用 pip-compile 自动使用最新依赖版本生成依赖文件 命令: pip-compile, 输出requirements.txt文件: requirements.txt # # This file is autogenerated by pip-compile with python 3.8 # To update, run: # # pip-compile # --index-url https://pypi.doubanio.com/simple --trusted-host pypi.doubanio.com click==8.1.3 # via flask flask==2.1.2 # via -r requirements....

May 24, 2022 · 1 min · LingZihuan