1.升级版本的时候经常遇到版本冲突的问题。有没有类似 java mvnrepository 的地方可以看到所有 lib 的第三方依赖的版本? 2.我现在用 anaconda 打出来的 docker image 要 3g 大。大家的包一般都多大?有什么办法怎么优化大小?换 miniconda ?( conda cache 已清除)
1 Dece 2024-08-09 10:54:42 +08:00 ![]() 可以尝试下 poetry ,来解决版本冲突问题 |
2 thinkershare 2024-08-09 11:29:50 +08:00 就是这个样子,python 的包版本设计有问题,暂时没有解决办法。 |
3 thinkershare 2024-08-09 11:30:59 +08:00 ![]() miniconda 等工具都无法完全解决问题,而且现在 miniconda 太慢了,用 conda-lock 锁定版本可能回好点,conda 解析依赖一旦包太多,搜索回慢的令人发指。 |
4 chaunceywe 2024-08-09 11:56:40 +08:00 ![]() 可以试试 rye |
![]() | 5 ruanimal 2024-08-09 12:00:37 +08:00 ![]() 换 miniconda 吧,conda 默认把它祖孙三代都装上了,能不大吗 |
6 paopjian 2024-08-09 12:13:09 +08:00 ![]() docker 打包都是最小原则,你这直接上 anaconda 过分了吧,不是应该 pip freeze 导出安装列表么 |
![]() | 7 huangyezhufeng 2024-08-09 12:13:34 +08:00 ![]() |
8 peanutBark 2024-08-09 13:54:28 +08:00 poetry 好用+1 |
9 mongoose 2024-08-09 15:07:23 +08:00 ![]() @thinkershare 试试 mamba ,它速度能快点,是 conda 的一个实现,解析依赖的速度比 conda 快多了,但是它也不能解决打包太大的问题。 |
10 thinkershare 2024-08-09 15:26:51 +08:00 ![]() @mongoose 这个我也试过。主要还不是解析依赖慢,而是现在的版本策略,同一个环境,同样的一份依赖,隔一段时间再安装,会因为实际安装的版本的变化导致原来的版本无法运行。随着安装的包数量越多,依赖冲突解决的时间就越长,我已经遇到过很多次,包版本相互冲突,conda 装一个新的包会破坏旧的包的依赖。最终各种手动强制安装出来一份能用的,不想折腾,直接锁定每个平台的包版本地址,以后再使用的时候,不解析依赖了,直接用锁定文件安装。 普通的 python 网站/爬虫类其实关系不大,主要是机器学习的很多包,都有对底层 CUDA 的特定版本依赖,就很烦。 |
11 nulIptr 2024-08-09 15:31:44 +08:00 docker image 大小可以拆多个 layer 解决,搞个装好所有依赖的 layer ,再打包只变更代码就行了 |
![]() | 12 TimCoke 2024-08-09 15:48:36 +08:00 基础镜像用带 slim 后缀的,比如我用 python3.12 打出来将近 2G ,用 python3.12-slim 打出来 300M |
14 nulIptr 2024-08-09 16:21:18 +08:00 ![]() @orioleq 增量变小了,你打镜像最终在 k8s 机器上跑的时候也会有缓存啊。只 pull 增量的速度还是会快很多的。 |
15 NickLuan 2024-08-09 16:38:14 +08:00 同一楼,poetry 管理 |
17 luckyc 2024-08-10 17:59:13 +08:00 ![]() 本地开发环境: pyenv 管理 python 版本 poetry 管理项目依赖 github dependabot 负责依赖库版本更新. dependabot 创建 pr 之后, pytest 负责单元测试, 看到消息上去处理一下就行了, 该 merge 的 merge, 该 close 的 close |