有什么方法可以确认 pip uninstall xxx 是安全的,不会破坏现有的项目及环境 venv?

2020-06-01 23:10:19 +08:00
 miniyao
项目的虚拟环境 venv 中有不少是临时安装的无效库 package (当时安装的时候,应该也没有在 requirements.txt 里添加),现在 pip freeze > new_requirements.txt 时,就一股脑全导出来了。

现在项目打算要升级一下版本,想把 venv 中无效的依赖库 pip uninstall xxx 掉(有些没用的库质量很差,也年久失修,升级新 Python 版本,pip3 安装都要报错),又担心万一哪个库又依赖这个 xxx 库,牵藤绊瓜。

有什么方法、或工具可以确认 pip uninstall xxx 是安全的吗?
1 、确认 xxx 依赖库在项目中没有使用,一般就只全局搜索一下 xxx 。(这个方法也不是很保险,万一安装包的名字和 import 的包名不一样,就找不准了)
2 、确认 xxx 依赖库在 venv 中,没有作为其他库的依赖库。同样也是搜一下,但是有时候会出现重名的情况。比如:搜 appdirs 这个库名的时候,就发行 pip 路径下面有个 appdirs.py ,另外还有一个独立的库也叫这个名字( pip install appdirs )。
2932 次点击
所在节点    Python
5 条回复
iyaozhen
2020-06-01 23:30:35 +08:00
pigar 以及类似的

只会导出你实际 import 过了的包
nightwitch
2020-06-02 08:56:56 +08:00
新建一个最小化的虚拟环境,把项目放进去,开始逐渐装包,直到能跑起来为止。
miniyao
2020-06-02 10:07:38 +08:00
@nightwitch 这个方法覆盖面不全。哪些异步线程里的 import 不会在启动时立即加载,检测不到。
dracher
2020-06-02 10:12:14 +08:00
可以切换到依赖管理工具
https://python-poetry.org/
可以管理分析依赖
miniyao
2020-06-02 17:09:31 +08:00
@iyaozhen 用了一下 pigar 分析,还是有不是依赖库分析不出来,漏掉了,不了解 AST 分析为什么不准,特别分析第三方 SDK 里的依赖库,漏了好几个。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/677649

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX