Skip to content
鼓励作者:欢迎打赏犒劳

python依赖打包

生成依赖清单

你可以在 PyCharm 的终端里(确认已激活虚拟环境),输入下面这个命令来生成它, 执行后,你就会在项目根目录看到这个文件了。打开它,里面就是当前虚拟环境下所有依赖包及其精确版本的列表。

但是,有一个非常不好的一点是,它会把虚拟环境里所有包都列出来(包括那些你项目没直接用到、但被其他包自动装进来的“依赖的依赖”)

shell
pip freeze > requirements.txt



## 别人拿到你的代码后,只需下面的命令就可以安装所需要的所有依赖
pip install -r requirements.txt

如果你想只列出项目代码真正直接导入的包,可以用 pipreqs 这个工具。一个更好的替代方案

shell
pip install pipreqs      # 先安装工具
pipreqs . --force --encoding utf-8 --ignore .venv,.idea,__pycache__       # 在当前目录生成,--force 是覆盖已有文件

pipreqs 是动态的,但它动态的依据是你的代码文件内容,而不是虚拟环境.. 虚拟环境中仍然有 requests 这个包

如何同步依赖清单

比如 你的清单里面的依赖比你本地的下载要少。如何让他俩保持一致。因为venv里面的依赖和你清单是2个独立的东西。 这个时候需要用到pip-sync

已经通过 pipreqs 生成了纯净的 requirements.txt,现在想让虚拟环境和它完全一致。

shell
pip install pip-tools

pip-sync requirements.txt

pip-sync 会立刻执行以下操作,请一定确认你的虚拟环境(提示符前有 (.venv)):

  • 安装 requirements.txt 里有的、但环境中缺失的包。
  • 卸载环境中存在、但 requirements.txt 里没有的包。
  • 更新版本不匹配的包。 命令执行完,你的虚拟环境就和 requirements.txt 文件完全一致了,所有“无用”的包都会被自动删除。

注意,它不会将你依赖包的依赖给删除掉,它会很智能的判断。所以不用担心!!!

如有转载或 CV 的请标注本站原文地址