Python 能不能像 node 一样管理包

2022-08-03 10:44:05 +08:00
 yuhangch

拉下来仓库,装上依赖能跑,删除项目依赖也就没了

conda 这种需要手动创建虚拟环境,没办法跟某个项目同步创建、删除

8626 次点击
所在节点    Python
56 条回复
towave
2022-08-03 18:41:50 +08:00
@dcsuibian cd 进对应文件夹,which npm 和 which node 的结果也是一样的,这个可以使用 https://github.com/volta-cli/volta 解决
786375312123
2022-08-03 19:00:44 +08:00
requirement.txt
LoNeFong
2022-08-03 19:39:01 +08:00
node 能不能像 python 一样管理包?
jiazhoulvke
2022-08-03 19:43:10 +08:00
居然有人喜欢黑洞
u823tg
2022-08-03 19:58:10 +08:00
@thinkershare #39 学术相关的基本就 c/c++,python 用来包皮的多。建议 直接用 linux 。 用 windows 的话装 vs 把 c++相关的全装上可以避免很多问题。 剩下的就真是依赖问题了。固定下版本应该就可以。 以前帮 PhD 朋友搞过。
u823tg
2022-08-03 20:00:37 +08:00
@thinkershare #39 要么就下载.whl 包。人家构建好的, 别用 pip 从源码开始构建
lisongeee
2022-08-03 20:22:58 +08:00
node_modules 是有黑洞缺点,但是却解决了《单个项目直接或间接依赖了同一个库的不同版本》的问题

就是项目存在这样的依赖结构,这基本上是每个项目必现的问题
A@1.0.0
--B@1.0.0
B@2.0.0

B@2.0.0 相对 B@1.0.0 发生完全破坏性更改,如何让 A@1.0.0 和 B@2.0.0 同时在这个项目正常工作?

除了 npm/pnpm/yarn 这类 node 包管理器,还有 deno ,我就没见过 《天然支持》多版本共存的依赖管理工具

另外 npm/yarn 以及 python 的 pip/pipenv/poetry 还有 java 的 maven/gradle 都存在 依赖提升 的问题,导致了你虽然只在项目声明了 A 包,但是你却可以直接使用 A 的依赖

比如 python 的 requests 依赖了 certifi ,你使用 pip 安装 requests 之后,你可以在你的项目里 import requests
也可以 import certifi ,但是这是不规范的,你只安装了 requests ,按理说应该只能 import requests ,不能使用 certifi
因为你没有 显式 声明或者安装

比如 java 的 com.blankj:utilcodex:1.31.0 这个包,它依赖了 com.google.code.gson:gson:2.8.5 ,当你在项目里声明这个包的依赖,虽然你的项目没有声明 com.google.code.gson:gson:2.8.5 但是你却可以直接使用 gson ,这就是依赖提升,
另外假设坏的情况下你的项目还有某个包依赖了 gson@1.0.0 ,它使用了 gson@1.0.0 的一个 A 类,但是这个 A 类在 gson@2 里面没有,你不是得手动解决? maven/gradle 能自动解决这个问题吗?

但是 node_modules + pnpm 下这些问题都不存在,开发者不需要手动改 sys 或者额外弄个 classloader

因此对我个人而言,我基本没有遇见 node 的依赖问题 ,而现在我用 pnpm ,通过文件链接的方式,磁盘占用问题和依赖提升问题也得到了良好的解决

倒是我以前写 Android 的时候,老是要针对某个包 exclude ,编译老是提示某个包缺失 类,但是 node 下我从来没有遇见这些问题

解决 node 的 node_modules 的黑洞问题,用 pnpm 或者 deno 就行
christin
2022-08-03 20:37:35 +08:00
第一次见到有人想要 node_modules 的,世界之大无奇不有
magicdawn
2022-08-03 22:24:47 +08:00
node 自带项目依赖而 Python 需要一堆名词,搞不懂 node/npm 哪里灾难了
FEDT
2022-08-03 22:43:31 +08:00
可以,pdm
scriptB0y
2022-08-03 22:56:27 +08:00
试试 https://github.com/pdm-project/pdm ,就是按照你要的方式管理的。

PEP 517 – A build-system independent format for source trees: https://peps.python.org/pep-0517/
hLc1
2022-08-04 08:18:47 +08:00
npm 有啥黑洞?嵌套依赖已经平级了,拜托你们更新下知识好吗
beixiao
2022-08-04 09:19:46 +08:00
node 能不能像 python 一样管理包
fyxtc
2022-08-04 09:27:20 +08:00
不相信别人说这是屎坑,非要自己往里跳试试看,就像对着 vsc 的人说:你们能不能做到像 vc6.0 一样写 c 的体验啊
seanzxx
2022-08-04 13:57:15 +08:00
pipenv 呀,自动创建 venv ,自动安装依赖
zhuweiyou
2022-08-04 17:21:10 +08:00
node_modules 不更坑?

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

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

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

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

© 2021 V2EX