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