1
sudoz 2016-03-02 09:24:54 +08:00 via Android
virualenv 加 pip
|
2
leeyiw 2016-03-02 09:25:26 +08:00
requirements.txt 和 virtualenv 结合,和 LZ 说的这两点达到的效果是一样的。
|
3
shunia 2016-03-02 09:27:36 +08:00 3
追?不应该是 npm 学习了诸多包管理生态(包括 easy_install,pip 等)吗?
|
4
slideclick OP 谢楼上各位。
|
5
hbkdsm 2016-03-02 09:29:32 +08:00 via Android
我怎么觉得第二条是缺点。。。一个项目都要下载几百兆的依赖
|
6
slideclick OP @shunia node.js 是后来者,肯定吸取前人教训。 node.js 出生时包管理就这么方便, python 没少走弯路因此有历史包袱。
|
7
slideclick OP @hbkdsm python 大君有次接受采访说,他最怕别人请他帮助解决打包的问题。第二天的方便之处是项目可以 COPY 就部署。这对 python 来说更为重要,因为 python 有 2 和 3 的分裂,因此隔离各个项目的库更加重要。
|
8
TangMonk 2016-03-02 09:33:20 +08:00
bundler 好啊
|
9
hahastudio 2016-03-02 09:36:53 +08:00
跑在前面的人是不是追上跑后面的人了?
你这是要套圈啊 |
10
bboyliu 2016-03-02 10:03:39 +08:00
@sudoz Would you please share me the answer about what is virualenv?
|
11
sjtlqy 2016-03-02 10:17:59 +08:00
O(∩_∩)O哈哈~, C++有包管理吗? 不还是照样牛逼
|
12
neoblackcap 2016-03-02 10:22:19 +08:00
npm 那水平就不要拿出来说先进了。遇到有需要编译的库,大家一样容易挂。还有 npm3 之后才开始了扁平化各类包。之前各个库自己管理自己的库,不断嵌套,在 windows 下还爆出了目录嵌套过长挂掉的情况,一个依赖下载几十兆。当时我真是大开眼界了,没想到包管理还可以这样做。真是简单粗暴啊!
现在的 npm 才说好点,说其他包管理追上它,那真是一个直钩钓鱼。 |
14
echo1937 2016-03-02 10:35:18 +08:00
一厨顶十黑 或者说 提问的艺术。
|
16
pinkman 2016-03-02 10:38:37 +08:00 via iPhone
别的不说我最喜欢的是 nrm, nrm 和 nrm use 让我装包再也不怕墙了
|
19
neoblackcap 2016-03-02 11:14:36 +08:00
@congeec C/C++的包管理并没有什么用,若是真有用的话,那它就不应该叫 CPM ,而是 apt,yum 。你想想嘛, C/C++写那么多东西都是平台相关的,那么这个包管理的意义何在?还是一样的自己管理啊,而且 C/C++各种编译方法啊,有的库用 CMake ,有的是 GNU Make 。
C++换个编译器都会报错,不同的 STL 会不兼容。因此我觉得 C/C++这些语言的包管理意义真不大。 |
20
raptor 2016-03-02 11:22:39 +08:00
python 的 virtualenv+pip+requirements.txt 早就实现了,即使是 py2/3 分裂也一样可以解决,不知道楼主所说的有什么可追的。
|
21
congeec 2016-03-02 11:25:08 +08:00 via iPad
@neoblackcap 也是啊,系统级的包管理就够了。不过 clib 是个很好的补充
|
22
lxy 2016-03-02 11:29:24 +08:00
virtualenv --no-site-packages venv
pip install -r requirements.txt 完美。 |
23
ivenvd 2016-03-02 11:36:24 +08:00
@neoblackcap 包管理的意义不限于此吧,一个很重要的功能是锁定依赖版本,为开发者提供统一的开发环境。比如开发者有人用 OS X ,有人用 Ubuntu ,有人用 Arch (尤其开源项目中,这种情况很常见),使用系统的包管理器显然是不合适的。
|
24
kfll 2016-03-02 11:54:32 +08:00
这个包管理工具能分组依赖么?
bundler 能 这个包管理工具靠什么稳定版本? npm: 我们有 semver ,我们靠约定;我们有 shrinkwrap ,但是咱才不要默认打开,打开了咱也不打算做校验,而且为了酷炫,咱跑一次 shrinkwrap 变一次 npm-shrinkwrap.json ; 其他包管理工具:我们自动锁定版本,校验哈希。 |
25
Tink 2016-03-02 12:17:12 +08:00
讲道理 virtualenv+pip 很好用啊
|
26
XIVN1987 2016-03-02 12:23:27 +08:00
virtualenv+pip ,在学 Flask 就这么用
|
27
neoblackcap 2016-03-02 12:55:58 +08:00
@ivenvd 托管语言大多数基于自身的虚拟机,那已经抹平了系统差异,那么其专有的包管理器的确有存在的必要。但是 C/C++这些本身就在造轮子,写特定平台的。若是要写起包管理器,出来的效果跟我们平常用到的也是很大差别的。
比如,到最后开发者还是得装了 6 个版本的 C++编译器以及对应 10 个版本的 STL 库。包管理完全没有实现统一开发平台的作用!最后还因为不同的库编译器不一样而头痛。 |
28
hitmanx 2016-03-02 12:59:16 +08:00
@BOYPT c++没有什么好用的包管理吧.我记得还看过视频,在微软每年举办的 c++的一个 camp 上, Bjarne Stroustrup\Scott Meyers 等等都在台上,自由问答环节,下面有人提问说为啥 c++没有 pip 啊,然后台上的几位 bla bla 说了一堆,具体说了啥忘了,总而言之就是现在没有,将来再说吧
|
29
janxin 2016-03-02 13:21:44 +08:00
楼主不要给 nodejs 招黑啊...
|
30
BOYPT 2016-03-02 13:23:03 +08:00
@hitmanx 包管理的概念其实很广泛,最终目的就是为了方便开发者,另外一个目的就是互通有无,这不是语言设计者 /引导者该插手的事。
楼上那些还拿平台来说事,像 arduino 只开发 AVR 平台的 C/C++,早就有包管理。 反正包管理是趋势,现在有,以后更加有而且更加好,你用还是不用都那样了。 |
31
hxtheone 2016-03-02 13:40:10 +08:00
第二点个人觉得利弊兼得吧, 隔离各个项目的依赖是挺好的, 但是每开一个项目就得下一堆包下来, 遇到网不好的时候真是心累
讲道理 bundler 真的是我用过最好的包管理工具没有之一 |
32
bboyliu 2016-03-02 14:03:24 +08:00
|
33
slideclick OP @lxy 谢谢!
|
35
kkhaike 2016-03-02 14:21:00 +08:00
npm 的目录套真是叼
|
36
hienchu 2016-03-02 14:23:35 +08:00
V2 不是英语角:P
|
37
ivenvd 2016-03-02 14:27:06 +08:00
@neoblackcap 操作系统自带的包管理器,也没需要你装 6 个版本的 C++ 编译器以及对应 10 个版本的 STL 库啊。编译型语言的包管理器确实限制多些,但是写个常规软件,一个 C++ 编译器应该还是够用的吧。
另外「托管语言」?第一次听到这个说法,查了一下貌似是 .Net 相关语言的意思? |
39
neoblackcap 2016-03-02 15:25:25 +08:00
@ivenvd 托管语言这个我还以为只要是有虚拟机的都是这样叫。反正我的意思就是指类似 java 或 C#这样的语言。
简单的项目是简单的项目,但是包管理必然是通用的嘛。复杂的问题解决不了,只能解决简单的,那么这个完全没有推广价值。最多这个世界上会再多一种包管理器而已。 若是要问我支不支持,我说一定支持,不过仅仅为了下载源代码的话,我为什么还要去学习一套新的包管理器的操作?编译,依赖还是要我人肉去解决,然后却说这个包管理器很好? 若是要说是源代码代码分发平台,仅仅用来交流的话那显然是有一个统一的平台好。但是交流平台就说交流平台,不要尝试包装成包管理嘛,明明包管理就没做好。 公司内部的话,我建议可以如轮子哥所说一样,仿照微软,什么都往版本库里面放,只要一 check out 那么就可以编译了。包管理什么的完全是在开发阶段人肉解决。 |
40
Mutoo 2016-03-02 16:04:57 +08:00
virualenv 还能解决多版本 python 隔离呢, node.js 怎么做?
|
42
wuyadong 2016-03-02 18:17:21 +08:00
python 的开发环境 /包管理 很吊的好嘛!
|
43
lovedboy 2016-03-02 18:24:29 +08:00
不是甩了几条街嘛==
|
45
doubleflower 2016-03-02 19:14:17 +08:00
python 的包管理当然比不上 npm 。还好 python 不象 nodejs 那样一个函数就搞个包,基本上一个项目没多少包,所以才能管得过来。
|
46
neo1218 2016-03-02 19:17:19 +08:00
说实话, PYPI 官网太难看了,比不上 npm 的。
|
48
tt0411 2016-03-02 21:53:12 +08:00
@neo1218 https://warehouse.python.org/ 不久就会漂亮了
|
50
meteor957 2018-12-02 19:59:21 +08:00
感觉没有==
|