Python 的包管理感觉怎么这么不优雅。。。

2018-01-03 23:00:14 +08:00
 serge001

本人前端一枚,习惯了 node 的 npm 之后感觉配置和使用起来都很简单方便,最近学习了一点 python 后,感觉 python 的包管理怎么这么不优雅。首先,配置文件居然是用 txt 文件来写的,二进制文件我用编辑器是无法打开的,然后用 git 也不能很好的版本管理;其次,pip install 是把包全都装在了全局,打开用户目录,一大堆以点开头的文件夹,抓狂。。。

19532 次点击
所在节点    Python
120 条回复
jsfaint
2018-01-04 08:54:44 +08:00
你需要 pipenv
wucancc
2018-01-04 08:54:50 +08:00
@Kilerd 经常遇到,也是这么解决的。
toono
2018-01-04 08:56:11 +08:00
pipenv 算是比较新的比较先进的。每个项目会有依赖列表文件,依赖安装的位置也是确定的
TangMonk
2018-01-04 08:58:27 +08:00
bundler 路过
secsilm
2018-01-04 09:01:26 +08:00
听你们说 pip 很坑的样子,可能是我用了个假的 pip 吧
qsnow6
2018-01-04 09:04:48 +08:00
pip 是不考虑安装环境的,如果你要安装的库里面需要系统环境支持的话,就需要自己把环境配好。
比如 lxmlx,就是个大魔王,网上搜下,多少人躺过这个坑。

如果不涉及 C 库或者系统环境还好,不然还真的蛮头疼的。

所以 conda 就是为了解决这个的,真的很好用,安装包的时候,顺带帮你把这个包所需的环境包也装了。
rocksolid
2018-01-04 09:05:07 +08:00
windows 下面 pip 的确蛮烦的
Mark24
2018-01-04 09:05:48 +08:00
@Kilerd 遇到过,热更新总是延时,也是这样解决的。
onlyice
2018-01-04 09:09:37 +08:00
对于 Python 库,可以用 pipenv,最新的最佳实践。

如果是带 C 扩展的 Python 库(比如 mysqlclient ),会麻烦一点,需要保证你的系统环境上有相应的 C 库(如 libmysqlclient.so )。这块可以看下 Anaconda 的实现。
doubleflower
2018-01-04 09:10:46 +08:00
pip 的确比 npm 设计上差老多了。
但是因为 python 不像 js 包分的很细很多,py 项目总的包数量是很少的,所以还能处理。如果 py 也像 js 几行代码都能做一个包,那他这个设计早就崩溃了。
LokiSharp
2018-01-04 09:14:21 +08:00
所以,有了 pipenv 啊
psuwgipgf
2018-01-04 09:17:17 +08:00
我用 python 写爬虫的时候也是这样想的,不过后来用了 golang。。。。
lihongjie0209
2018-01-04 09:23:59 +08:00
pip 和 npm 都挺难用的
bolide2005
2018-01-04 09:28:19 +08:00
python 的包管理在各类第三方工具的帮助下已经算是比较“优雅”的了
不然你试试 golang ……
feather12315
2018-01-04 09:37:53 +08:00
@hsuan Linux ? 装软件软件源里的,几乎都有。没有的自己打包个。
circleee
2018-01-04 09:44:00 +08:00
@Kilerd 遇到过。
circleee
2018-01-04 09:44:27 +08:00
@huangunic0rn .............
Tink
2018-01-04 09:48:58 +08:00
virtualenv
anasplrt34
2018-01-04 09:49:15 +08:00
用了 golang 的包管理 你就会觉得 pip 是多么优秀了 www
guyskk0x0
2018-01-04 09:52:42 +08:00
@zachguo 带 C 拓展的确实很复杂,尤其是 Linux,不同系统依赖的动态链接库不一致,在脚步语言里是硬伤,npm 也有类似的问题,只不过它很少带 C 拓展的库。docker 按理说不会有这种问题。

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

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

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

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

© 2021 V2EX