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

2 天前
drymonfidelia  drymonfidelia

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

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

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

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

4925 次点击
所在节点   程序员  程序员
72 条回复
seki
seki
2 天前
pnpm:你在想我?

nv:你在想我?
seki
seki
2 天前
哦,python 的那个叫 uv
abcdxe2v
abcdxe2v
2 天前
历史遗留 不好改了。。
rogerer
rogerer
2 天前
因为存储不值钱
dcoder
dcoder
2 天前
@drymonfidelia
用下面这个两个, 代替默认的 Python, Node 包管理
https://docs.astral.sh/uv/
https://pnpm.io/
yuankui
yuankui
2 天前
yarn2: 你在说我?
c0t
c0t
2 天前
我一个以前很讨厌 python 的人,用了 rye + uv 之后,开始喜欢写 python 工具了,特别是嵌入式工具的脚本
crackidz
crackidz
2 天前
Python venv 不应该会复制解析器,直接链接的啊... 但是 venv 和 node_modules 的情况类似,你都需要每个项目复制一遍依赖包,当然情况多少比 node_modules 好一点点
charlie21
charlie21
2 天前
npm: 不同 package 自己在 package.json 里指定了自己的依赖版本,怪我咯?
https://stackoverflow.com/questions/65487385/should-i-duplicate-peerdependencies-in-dependencies-field-of-package-json
wangtian2020
wangtian2020
2 天前
其他语言什么装包速度也配跟 nodejs 比。我看一了一下新项目的 node_modules 大小只有 500MB 。一般能 node_modules 上 G 的,肯定是什么公司里的屎山代码,这种公司啊,不值得待应该跑路。
node_modules 要是容量大了,那还不是编译了 node-sqlite 、node-sass 之类外来二进制包的锅
samnya
samnya
2 天前
pnpm 和 uv 都是靠链接,我个人还是更喜欢全局中央仓库的概念,让软件自己去中央仓库找。

依赖版本号冲突的时候,在那里反复安装删除就受不了,用 pip 的肯定都体验过。中央仓库直接什么版本都有,反正调用的时候去取吧。
guiyumin
guiyumin
2 天前
现在才$0.1/gb
没必要吧
不要为了节省空间而浪费大家的时间
chengyiqun
chengyiqun
2 天前
uv 这种靠链接, 有时候需要打包一个可执行环境给别人, 还是用 conda 方便些
yolee599
yolee599
2 天前
独立的 venv 也有独立的好处,不同环境不会互相污染,清理的时候文件夹一删就完事
darktutu
darktutu
2 天前
那生成 requirements.txt 有什么好方式吗,每次都是切到 venv 环境下一顿处理,才能弄到只有必须的包,要不总会包含很多别的不用的包?才开始使用 python ,希望不吝赐教啊
cdwyd
cdwyd
2 天前
@darktutu pipreqs
Bingchunmoli
Bingchunmoli
2 天前
@wangtian2020 没见过公司项目少于 g 的 node_mofules 。。。
NessajCN
NessajCN
2 天前
Sounds like a skill issue
darktutu
2 天前
@cdwyd 尝试过,不知道哪弄得不对,会出异常。就没有继续研究。
qsnow6
2 天前
@NessajCN i don't think this is a issue.

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

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

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

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

© 2021 V2EX