关于 Python pip 的疑问

2017-12-22 18:06:11 +08:00
 cls1991

pip uninstall 移除 package, 无法彻底清理依赖:

    $ pip install qu

    $ pip show -v qu
    ...
    `Requires: qiniu, click, pytest`
    ...

    $ pip uninstall -y qu

    $ pip freeze | grep -E 'qiniu|click|pytest'

    `click==6.7`
    `pytest==3.3.1`
    `qiniu==7.2.0`
3246 次点击
所在节点    Python
9 条回复
TimePPT
2017-12-22 18:42:22 +08:00
pip uninstall 时候依赖的 package 确实是不会被清除的,可以试试 pip-autoremove,或者自己编脚本清。
pip-autoremove 有个问题是无法确定一个 package 是否被多依赖,比较暴力,所以用起来需谨慎。

还有就是建议利用 virtualenv 去隔离 python 环境,这样卸载包也方便
Arnie97
2017-12-22 18:47:05 +08:00
嗯,pip 本身没有 auto / manual 的区分,不会自动删除依赖。
我推荐一个工具,pip install pipdeptree
LokiSharp
2017-12-22 18:52:33 +08:00
用 pipenv 自动解决依赖问题,无残留
cls1991
2017-12-22 18:53:15 +08:00
@Arnie97 @TimePPT 感谢两位大佬, 参考一下,准备撸一个工具, 仅拓展 pip uninstall 的功能。
cls1991
2017-12-22 19:09:38 +08:00
@LokiSharp 谢了,不过暂时还不想迁移到另一套工作流上。
rogwan
2017-12-22 19:15:34 +08:00
包依赖管理是个比较复杂事情,重复依赖、包版本都需要考虑到,所以安全起见,让冗余多一点也是稳妥的解决方法。磁盘上多几个用不到的包不碍事,错删一个必须的依赖库就跑不起来。
lolizeppelin
2017-12-22 21:42:22 +08:00
打包 RPM 让系统来管
Cbdy
2017-12-22 21:53:43 +08:00
能用 docker,还是用 docker 吧。。
cls1991
2017-12-25 19:49:55 +08:00
@all https://github.com/cls1991/pef, 弄了一下初步的解决方案.

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

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

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

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

© 2021 V2EX