请教 Python 的包依赖冲突

40 天前
 orioleq

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

2062 次点击
所在节点    Python
17 条回复
Dece
40 天前
可以尝试下 poetry ,来解决版本冲突问题
thinkershare
40 天前
就是这个样子,python 的包版本设计有问题,暂时没有解决办法。
thinkershare
40 天前
miniconda 等工具都无法完全解决问题,而且现在 miniconda 太慢了,用 conda-lock 锁定版本可能回好点,conda 解析依赖一旦包太多,搜索回慢的令人发指。
chaunceywe
40 天前
可以试试 rye
ruanimal
40 天前
换 miniconda 吧,conda 默认把它祖孙三代都装上了,能不大吗
paopjian
40 天前
docker 打包都是最小原则,你这直接上 anaconda 过分了吧,不是应该 pip freeze 导出安装列表么
huangyezhufeng
40 天前
https://datahonor.com/mppt/package/

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


github dependabot 负责依赖库版本更新.
dependabot 创建 pr 之后, pytest 负责单元测试, 看到消息上去处理一下就行了,
该 merge 的 merge, 该 close 的 close

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

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

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

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

© 2021 V2EX