请教 Python 的包依赖冲突 - V2EX
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
orioleq
V2EX    Python

请教 Python 的包依赖冲突

  •  
  •   orioleq 2024-08-09 10:48:28 +08:00 via iPhone 2809 次点击
    这是一个创建于 432 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.升级版本的时候经常遇到版本冲突的问题。有没有类似 java mvnrepository 的地方可以看到所有 lib 的第三方依赖的版本? 2.我现在用 anaconda 打出来的 docker image 要 3g 大。大家的包一般都多大?有什么办法怎么优化大小?换 miniconda ?( conda cache 已清除)

    17 条回复    2024-08-10 17:59:13 +08:00
    Dece
        1
    Dece  
       2024-08-09 10:54:42 +08:00   1
    可以尝试下 poetry ,来解决版本冲突问题
    thinkershare
        2
    thinkershare  
       2024-08-09 11:29:50 +08:00
    就是这个样子,python 的包版本设计有问题,暂时没有解决办法。
    thinkershare
        3
    thinkershare  
       2024-08-09 11:30:59 +08:00   1
    miniconda 等工具都无法完全解决问题,而且现在 miniconda 太慢了,用 conda-lock 锁定版本可能回好点,conda 解析依赖一旦包太多,搜索回慢的令人发指。
    chunceywe
        4
    chaunceywe  
       2024-08-09 11:56:40 +08:00   1
    可以试试 rye
    ruanimal
        5
    ruanimal  
       2024-08-09 12:00:37 +08:00   1
    换 miniconda 吧,conda 默认把它祖孙三代都装上了,能不大吗
    paopjian
        6
    paopjian  
       2024-08-09 12:13:09 +08:00   1
    docker 打包都是最小原则,你这直接上 anaconda 过分了吧,不是应该 pip freeze 导出安装列表么
    huangyezhufeng
        7
    huangyezhufeng  
       2024-08-09 12:13:34 +08:00   1
    https://datahonor.com/mppt/package/

    建议 poetry 或者 uv ,如果依赖 conda 环境可以用 pixi
    peanutBark
        8
    peanutBark  
       2024-08-09 13:54:28 +08:00
    poetry 好用+1
    mongoose
        9
    mongoose  
       2024-08-09 15:07:23 +08:00   1
    @thinkershare 试试 mamba ,它速度能快点,是 conda 的一个实现,解析依赖的速度比 conda 快多了,但是它也不能解决打包太大的问题。
    thinkershare
        10
    thinkershare  
       2024-08-09 15:26:51 +08:00   1
    @mongoose 这个我也试过。主要还不是解析依赖慢,而是现在的版本策略,同一个环境,同样的一份依赖,隔一段时间再安装,会因为实际安装的版本的变化导致原来的版本无法运行。随着安装的包数量越多,依赖冲突解决的时间就越长,我已经遇到过很多次,包版本相互冲突,conda 装一个新的包会破坏旧的包的依赖。最终各种手动强制安装出来一份能用的,不想折腾,直接锁定每个平台的包版本地址,以后再使用的时候,不解析依赖了,直接用锁定文件安装。
    普通的 python 网站/爬虫类其实关系不大,主要是机器学习的很多包,都有对底层 CUDA 的特定版本依赖,就很烦。
    nulIptr
        11
    nulIptr  
       2024-08-09 15:31:44 +08:00
    docker image 大小可以拆多个 layer 解决,搞个装好所有依赖的 layer ,再打包只变更代码就行了
    TimCoke
        12
    TimCoke  
       2024-08-09 15:48:36 +08:00
    基础镜像用带 slim 后缀的,比如我用 python3.12 打出来将近 2G ,用 python3.12-slim 打出来 300M
    orioleq
        13
    orioleq  
    OP
       2024-08-09 16:14:05 +08:00 via iPhone
    @nulIptr docker 分层缓存似乎只能解决打包速度的问题,大小应该差不多吧
    nulIptr
        14
    nulIptr  
       2024-08-09 16:21:18 +08:00   1
    @orioleq 增量变小了,你打镜像最终在 k8s 机器上跑的时候也会有缓存啊。只 pull 增量的速度还是会快很多的。
    NickLuan
        15
    NickLuan  
       2024-08-09 16:38:14 +08:00
    同一楼,poetry 管理
    ruanimal
        16
    ruanimal  
       2024-08-10 14:34:41 +08:00
    @mongoose 有 minimamba
    luckyc
        17
    luckyc  
       2024-08-10 17:59:13 +08:00   1
    本地开发环境:
    pyenv 管理 python 版本
    poetry 管理项目依赖


    github dependabot 负责依赖库版本更新.
    dependabot 创建 pr 之后, pytest 负责单元测试, 看到消息上去处理一下就行了,
    该 merge 的 merge, 该 close 的 close
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3124 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 11:51 PVG 19:51 LAX 04:51 JFK 07:51
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86