V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
cls1991
V2EX  ›  Python

关于 Python pip 的疑问

  •  
  •   cls1991 · 2017-12-22 18:06:11 +08:00 · 3238 次点击
    这是一个创建于 2309 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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`
    
    9 条回复    2017-12-25 19:49:55 +08:00
    TimePPT
        1
    TimePPT  
       2017-12-22 18:42:22 +08:00   ❤️ 1
    pip uninstall 时候依赖的 package 确实是不会被清除的,可以试试 pip-autoremove,或者自己编脚本清。
    pip-autoremove 有个问题是无法确定一个 package 是否被多依赖,比较暴力,所以用起来需谨慎。

    还有就是建议利用 virtualenv 去隔离 python 环境,这样卸载包也方便
    Arnie97
        2
    Arnie97  
       2017-12-22 18:47:05 +08:00 via Android
    嗯,pip 本身没有 auto / manual 的区分,不会自动删除依赖。
    我推荐一个工具,pip install pipdeptree
    LokiSharp
        3
    LokiSharp  
       2017-12-22 18:52:33 +08:00 via iPhone
    用 pipenv 自动解决依赖问题,无残留
    cls1991
        4
    cls1991  
    OP
       2017-12-22 18:53:15 +08:00
    @Arnie97 @TimePPT 感谢两位大佬, 参考一下,准备撸一个工具, 仅拓展 pip uninstall 的功能。
    cls1991
        5
    cls1991  
    OP
       2017-12-22 19:09:38 +08:00
    @LokiSharp 谢了,不过暂时还不想迁移到另一套工作流上。
    rogwan
        6
    rogwan  
       2017-12-22 19:15:34 +08:00
    包依赖管理是个比较复杂事情,重复依赖、包版本都需要考虑到,所以安全起见,让冗余多一点也是稳妥的解决方法。磁盘上多几个用不到的包不碍事,错删一个必须的依赖库就跑不起来。
    lolizeppelin
        7
    lolizeppelin  
       2017-12-22 21:42:22 +08:00 via Android
    打包 RPM 让系统来管
    Cbdy
        8
    Cbdy  
       2017-12-22 21:53:43 +08:00 via Android
    能用 docker,还是用 docker 吧。。
    cls1991
        9
    cls1991  
    OP
       2017-12-25 19:49:55 +08:00
    @all https://github.com/cls1991/pef, 弄了一下初步的解决方案.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4090 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 04:10 · PVG 12:10 · LAX 21:10 · JFK 00:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.