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

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

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

20147 次点击
所在节点    Python
120 条回复
rcteya76084
2018-01-04 19:37:34 +08:00
你们不要吵了,PHP 是最好的语言
ipwx
2018-01-04 20:25:29 +08:00
@vwxyzjn 其实我也主要用 Python,不过可能我写的程序不是很业务,而且引入依赖也比较谨慎(小库基本上 copy-paste-modify-test,好处是自己的单元测试比较放心),所以没啥大问题。
kiwi95
2018-01-04 23:14:18 +08:00
互联网上一半的流量都在跑 npm install/update,能不优雅
forrestchang
2018-01-04 23:20:34 +08:00
Python 的导入机制确实不太优雅,但是包管理机制还是众多语言中比较好的。

1. requirements.txt 只是文本文件,在 Linux 上后缀和文件是不是二进制无关,这样写只是约定俗成,你也可以写成别的;
2. 正确的做法是一个项目用一个 virtualenv 来管理包,进行项目间的包隔离。
Owenjia
2018-01-04 23:24:29 +08:00
requirements.txt 还是只在开发中使用比较好,有分发需求的话依赖最好写 setup.py 里;
pip 确实存在一些问题,比如处理依赖关系上,安装可能会需要手动使用系统包管理安装一些东西,卸载不能自动清理已经不被依赖的包(也许可以但我不知道)。
est
2018-01-04 23:28:42 +08:00
npm 的项目,放半年之后 npm update 一次保证跑不起来。
Sparetire
2018-01-05 03:14:18 +08:00
@est 那别说项目了,某些 linux 不都是这样。。
lightening
2018-01-05 03:38:10 +08:00
Python 的包管理机制确实不是最好的。不过你的吐槽都不在点上。
allenhu
2018-01-05 08:35:32 +08:00
Python 包好像是大小写乱用,看的很蛋疼
quinoa42
2018-01-05 09:00:12 +08:00
我常用 pyenv,尝试了一下 pipenv,确实很炫酷,但是感觉很不顺手…
用 pipenv 的话 virtualenv 肯定要全交给 pipenv 管理,可是 pipenv 各种操作都是直接无视 pyenv,比如 pipenv install --system ***把 package 装到了我也不知道在哪的地方
而且自带 flake 等等让我觉得 pipenv 有点做的太多了
如果能有一款只包含 pipfile[.lock]管理的工具就好了,其他方面我觉得还是 pyenv 好用
综上,滚回 pyenv 了:)
如果有正确的 pyenv+pipenv 使用方式,请务必告诉我
yylucifer
2018-01-05 09:42:32 +08:00
你用的姿势不对。。
korvin
2018-01-05 09:59:41 +08:00
你要和 node 的 npm 像一点可以用 pipenv 可以区分 prod 和 dev 包
ryh
2018-01-05 10:34:41 +08:00
npm 昨天各种在莫名其妙的 hang, taobao 的 官方的 官方的+梯子 都这样😂
感觉是墙的锅
ryh
2018-01-05 10:36:04 +08:00
补充下:yarn 也是如此
qgb
2018-01-05 13:11:01 +08:00
@kiwi95 233 这是黑吗
billion
2018-01-05 13:25:36 +08:00
Pipenv: Python Dev Workflow for Humans

http://pipenv.readthedocs.io/en/latest/
lolizeppelin
2018-01-05 16:58:15 +08:00
瞎 bb openstack 那么大项目依赖都能写得清清楚楚

自己搞不定依赖怪 pip

再说了 linux 服务器上就该老老实实打包 rpm
什么包管理都是 TM 是假的

要么好好写依赖做 rpm 包 要么就和 Java 一样全部依赖包一个整的 部署的时候还 pip npm 早点死一边去
param
2018-01-06 18:39:13 +08:00
@lolizeppelin 部署我不觉得要打成 rpm,rpm 只保证兼容 red hat 系。我觉得在 Dockerfile 里写 pip 打包是 docker 镜像才是最佳实践。
est
2018-01-07 16:48:02 +08:00
cjc91
2018-01-23 17:06:55 +08:00
有一对情侣,男的非常懦弱,做什么事情之前都让女友先试。女友对此十分不满。 一次,两人出海,返航时,飓风将小艇摧毁,幸亏女友抓住了一块木板才保住了两人的性命。女友问男友:你怕吗?男友从怀中掏出一把水果刀,说:怕,但有鲨鱼来,我就用这个对付它。女友只是摇头苦笑。 不久,一艘货轮发现了他们,正当他们欣喜若狂时,一群鲨鱼出现了,女友大叫:我们一起用力游,会没事的!男友却突然用力将女友推进海里,扒着木板朝货轮了,并喊道:这次我先试!女友惊呆了,望着男友的背影,感到非常绝望。鲨鱼正在靠近,可对女友不感兴趣而径直向男友游去,男友被鲨鱼凶猛地撕咬着,他发疯似地冲女友喊道:我爱你! 女友获救了,甲板上的人都在默哀,船长坐到女友身边说:小姐,他是我见过最勇敢的人。我们为他祈祷!不,他是个胆小鬼。女友冷冷地说。 您怎么这样说呢?刚才我一直用望远镜观察你们,我清楚地看到他把你推开后用刀子割破了自己的手腕。鲨鱼对血腥味很敏感,如果他不这样做来争取时间,恐怕你永远不会出现在这艘船上。什么?女友听到真相如同晴天霹雳,她悲痛欲绝,伤心无比,只想立刻跳进海里和男友死在一起。关键时刻船长拉住了她:如果我是你,一定会好好的活下去,并用挖掘机把这条大海填平,为你的男朋友报仇血恨。女友沉默数秒,冷静的问:挖掘机技术哪家强。船长:中国山东找蓝翔。

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

https://tanronggui.xyz/t/419850

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

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

© 2021 V2EX