为什么 Python 、Node.js 就不能学习一下 C#这种优雅的依赖管理方式?

175 天前
 drymonfidelia

node_modules 每个项目都有几个 GB ,这站里大部分都是前端,应该都懂,不用多说了

最近发现 Python 的 venv 也超大,并且比 Node.js 还离谱,每个项目的 venv 里都还会复制一遍 python 解析器

为什么就不能像.NET 的 NuGet 一样,把依赖都按版本放在一起?放在项目目录里,还要配置版本管理排除

NuGet 的包缓存目录里有版本号,不同依赖版本不会冲突

7789 次点击
所在节点    程序员
79 条回复
jqtmviyu
174 天前
@Trim21 #60 我还是官方文档没仔细看, 一直以为 run 是用在 project 里, 而我一直很抗拒生成 pyproject.toml, 坚持 uv pip install -r requirements.txt 的古法仙人 . 网上的中文教程太落后了. macos 上全局设置 hardlink 和 pip 镜像也是网友评论区提醒的.
crackhopper
174 天前
我其实刚想说,看已经撕起来了,哈哈。

还真没看到过啥优雅的依赖管理方式。说优雅只能说,用得还不够深度。而且,我比较喜欢都复制在本地文件夹。放在全局,项目一多了,真的头疼。每个项目都能隔离好,才是真正的优雅。而且放在本地还能一起复制走,多好。浪费点存储算什么。我有时候还会 hack 到依赖包里改源码(当然也不提交版本库,要提交也有专门的方法打 patch 吧,通过 build script 什么的),这种改依赖包源码的情况,放全局岂不是灾难?
wlingxiao
174 天前
宇宙第一的编程语言 c++ 就从来不参与包管理方面的讨论🐶
niubiman
174 天前
@jiangzm 你说的就是那些还在认为.net 只能运行在 windows 上的人么
niubiman
174 天前
@thoo61871 人家吹 c 井又不影响你学 java
niubiman
174 天前
@maix27 无球所谓啊 c#本来也没几个人在用
niubiman
174 天前
@LitterGopher #38 真的是精通各种语言的包安装, 大佬大佬
niubiman
174 天前
@wlingxiao 大佬没空跟菜鸡互啄
SkywalkerJi
174 天前
uv 管理依赖还可以。奇怪的是 Python 跨版本的兼容性吧。
Syiize
174 天前
等你写 Python 用到某些一直不升级依赖的 Python 包的时候,你就知道虚拟环境隔离的好处了🐶
LitterGopher
173 天前
@niubiman #67 开玩笑,卸载我也很精通。
maix27
173 天前
@niubiman 没人用真得想想社区和生态的原因,国内的 C#社区就不太健康,社区里的资源基本没有 有的资源也要钱 好像大家都知道 C#要死了一样 赚快钱 能赚多少是多少,喜欢发帖的开发者也很魔怔,就跟 op 一样魔怔。

最重要的 我不止一次看见 C#的使用者发帖抱怨面试的 C#开发者素质不高,这点对社区的建设很有阻碍作用。
chesha1
172 天前
@kakki #58 maven 太重,别的语言( c++这种手动太多的除外)基本 1 分钟就能上手依赖管理,这个命令是安装,这个文件是依赖的配置文件,这行代码用来导包,然后就完了。maven 要讲一堆东西
junkun
172 天前
有一个原因可能是 npm 和 pip 很多都是源码分发的,很多人喜欢直接去修改依赖库的源码(比如我),如果用全局管理的方式,会导致被污染。
另外,npm 和 pip 的很多包需要编译,甚至需要自己下源码来编译,因为有编译脚本,不独立目录容易冲突和污染。
不像 C#和 java 基本都是字节码分发,编译好的包到处都能用。
StephenHe
172 天前
npm 挺好的,那些往 C 盘装东西的都不是好鸟,一点不考虑公司电脑的垃圾配置。
mlhiter955
172 天前
空间不值钱,造就完了
thinkershare
172 天前
@Al0rid4l 事实上就是这玩意没啥用
Al0rid4l
172 天前
@thinkershare 那么反过来说, Nuget 设计确实很烂, 工作不饱和闲着没 p 事设计了一个没啥用的东西

又或者, 这个星球上主流几个语言的包管理器(cargo, uv, npm, pnpm, uv, pdm, nuget, gradle)设计者都是 sb, 闲出屁来要整个没啥用的 lockfile, 那还等什么呢, 包管理器的革命就等你了, 这个世界需要你, 快到主席台上来吧
waleslau
171 天前
@StephenHe 哈哈哈哈,确实,npm 这个“特性”确实蛮好😂

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

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

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

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

© 2021 V2EX