1
learningman 2022-02-01 13:17:59 +08:00 1
推荐 poetry
poetry publish --build 就走了 |
2
ClericPy 2022-02-01 13:25:53 +08:00 2
除了楼上的, 貌似还有 flit, 被官方招安了
|
3
orange 2022-02-01 13:42:28 +08:00
关注
|
4
aloxaf 2022-02-01 15:26:13 +08:00
来用 pdm
|
5
liuhai233 2022-02-01 15:30:09 +08:00
docker 使用者表示万物皆可 docker, 一个 requirements.txt 就够了
|
7
learningman 2022-02-01 15:54:24 +08:00
@liuhai233 #5 alpine 装带 C 库的包容易炸,slim 就 300m 了。。。
|
8
SuperMild 2022-02-01 17:16:59 +08:00 1
看过 poetry 和 flit ,因为表面上看来 flit 比较简单我就选择了 flit ,使用过程中总的来说比较顺利。
|
9
ospider 2022-02-01 17:32:07 +08:00
pipenv 强烈不推荐。我以前是比较推荐的 poetry 的,但是遇到 bug 太多了,而且 resolve 起来特别慢。现在看起来 flit 应该是不错的。
|
10
sch1111878 2022-02-01 19:48:28 +08:00
@ospider pipenv 直接接触感觉还是很不错的, 和 npm cocoapods 有相似之处, 请问不推荐的原因是什么?
|
11
matrix67 2022-02-01 20:30:16 +08:00 1
@sch1111878 #10
python 包版本吃瓜 1. 没法单独更新包 2. 代码未动,文档( PR )先行 3. 卸载包更新 4. I have no idea. 5. 伪装官方 6. 喜欢烂尾 7. 速度慢 Lock 时间长 8. 对项目发展没有信心 9. Poetry?也不行 10. 没有任何官方和核心开发者支持 11. 未处理的 Issue/PR 太多 情报来源: https://v2ex.com/t/777916 https://www.zhihu.com/question/322932995/answer/672812417 |
12
mekingname 2022-02-01 21:17:08 +08:00 1
Poetry 有一个很严重的问题,就是它的依赖在不同的系统会冲突。
例如,你使用 macOS 开发,通过 poetry add uvicorn 安装了这个包。 然后你到 Linux 系统上部署,如果你带上了 macOS 上面生成的.lock 文件,那么你执行 poetry install 安装以后,运行就会报错,因为它安装的这个版本是 macOS 的版本,在 Linux 上不能用。你必须先删除.lock 文件,再 poetry install 才能使用。 @learningman |
13
neoblackcap 2022-02-01 21:19:56 +08:00
如果你目标平台是 Debian 系的 Linux 发行版,那么请使用 dh-virtualenv 工具构建一个 deb 包作为构建产物。
此方法是我认为相对较好的了。同理 Redhat 系的也可以去寻找相类似的工具,原理还是构建一个目标平台的包。 这种方法的优势在于, 1. 可以完全在构建机器上完成构建。 2. 对系统依赖极低,基本上只依赖 CPython 解析器,同时如果依赖第三方库,可以通过发行版的包管理器解决。 3. 打包的产物基本上就是你要部署的文件,一般情况下可以做到比 Docker 镜像更小 4. 可以编写 Systemd/init.d 脚本,部署的时候一并部署了,完全做到通过系统命令来管理程序生命周期( start/stop/restart) 5. 可以更加容易地部署静态资源文件,而不用考虑资源文件在项目中的组织或者所在相对目录 |
14
learningman 2022-02-01 21:28:05 +08:00
@mekingname #12 没遇到过这个问题。。。至少对我而言,Windows 的项目在 Linux 运行正常
|
15
arischow 2022-02-01 22:05:51 +08:00
@mekingname #12 这个我感觉不太可能吧……
|
16
ispinfx 2022-02-01 23:09:30 +08:00 via iPhone
@mekingname poetry 不就是用来解决这些问题的吗…怎么可能…没遇到过…
|
17
felixcode 2022-02-02 04:32:26 +08:00 via Android
@mekingname
是不是碰到 x86 和 arm 的问题了 |
18
ericgui 2022-02-02 08:08:00 +08:00 1
pip 有什么问题吗
|
19
Macv1994 2022-02-02 11:45:00 +08:00 via Android
我还是原始的 pip🐶
|
20
liuhai233 2022-02-02 20:25:21 +08:00 via iPhone
@learningman 确实,前司 python 项目镜像装完依赖 2GB
|
21
Vegetable 2022-02-03 00:01:29 +08:00
当下我简单调研发现只有 poetry 一个选择比较好。resolve 有时候确实比较慢,注意选择合适的源。
flit 并没有用过,简单看一下好像是聚焦在打包发布方面的。但是 poetry 不是。 pipenv...用过,体验很差。 不也包管理只管理 requirements 不是不行,但是这样还要手动维护虚拟环境,麻烦。 我使用 poetry 管理的唯一痛点就是,没有一个 js 的 husky 这种分发 githook 的工具。 不过这不算 poetry 的问题 |
22
maniaccn 2022-02-04 18:21:36 +08:00
包管理器不知道,但是分发的话,docker 最省事
|
23
frostming 2022-02-07 20:18:54 +08:00
@Vegetable
我使用 poetry 管理的唯一痛点就是,没有一个 js 的 husky 这种分发 githook 的工具。 不过这不算 poetry 的问题 Python 里对应的是 pre-commit ,但在 githook 上跑很重的任务( husky, pre-commit )这种是不是好的实践都是有争议的 |
24
frostming 2022-02-07 20:30:26 +08:00
看来 PDM 的普及程度还是不行,大家都不知道呢。如果用 Poetry 有什么不能忍的事情,不妨试试。
|
25
dcoder 2022-03-16 07:27:24 +08:00
@frostming PDM 有没有跟 PyCharm 集成的计划?
Poetry 现在被 PyCharm 支持了, PyCharm 新建项目会在其 Terminal 里自动设置好虚拟环境 |
26
frostming 2022-03-16 11:45:06 +08:00 1
|
27
sch1111878 2022-04-11 21:35:00 +08:00
@matrix67 感谢回复
|