也是醉了,从 pip 学习到 pipenv,再切换到 poetry,最后还是用回 pip

100 天前
 pl01665077

也是醉了,最近使用 docker+poetry 1.5.1 部署一个项目,dockerfile 模板之前一直正常,最近推送代码到部署环境,发现 docker build 居然失败。一查发现怎么缺少了依赖库?平时使用 poetry 安装不都是自动装依赖库的吗?

去 github issue 一查,发现这个问题才明白,poetry 的依赖崩了。。。导致重新创建新的环境的时候,再使用 poetry 创建环境就出现安装依赖错误。。。

解决方案是要锁定 pkginfo 版本

poetry self add pkginfo==1.10.0

但是改了好几次 dockerfile 还是不行,最后还是导出 requirements.txt ,用 pip 方式安装,改写 dockerfile 后终于部署正常了。。。

以前受过 pipenv 的教训,它过了一段时间再安装,会出可能启动不了项目,是由于 pipenv 没有完全锁死依赖库版本。现在本来以为 poetry 包管理器足够稳定,可以一直安心用不加班,没想到现在又要重新更好一点的包管理器,或者用回 pip

7063 次点击
所在节点    Python
90 条回复
Elaina
100 天前
@coolair uv 相比 poetry 有什么优点吗,其他的貌似我都用过,就是没用过 uv😂
Trim21
100 天前
因为 pip 没法有外部依赖,所以直接把他用到的依赖给 vendor 了,所以等你好久不升级 pip ,pip 告诉你版本太旧装不了新依赖的时候你只需要升级 pip 就行。

poetry 没 vendor ,所以你还需要升级 poetry 的依赖。
donglintong
100 天前
uv +1
jqtmviyu
100 天前
uv +1

```sh
# 安装
uv pip install -r requirements.txt
# 导出
uv pip freeze > requirements.txt
```
mayli
100 天前
rye 好,快去用。
自从用了 rye ,我整个人的毒性都降低了,就感觉快
lgh
100 天前
在用 pdm ,暂时没有想换的理由。

楼上好多人把环境隔离和依赖管理混为一谈的。

用 pip 最大的问题还是直接依赖和间接依赖的区别。如果不用 pdm 的时候我会用 requirements.txt 管理直接依赖、再 freeze 成 requirements-lock.txt ,否则要升级某个库的时候简直想死。
hanxiV2EX
100 天前
pdm 真爽,用了回不去了。
qwq11
100 天前
uv+1
coolair
100 天前
@Elaina #40 uv 是终点站。
tairan2006
100 天前
conda+pip

跑 docker 的话直接装全局就行
kaktos
100 天前
无脑上 uv ,其他看都不要看
bianjp
100 天前
poetry 不支持全局配置使用国内的 PyPI 镜像站挺不方便的,官方一直不愿意做这个功能。
wryyyyyyyyyyyy
100 天前
@encro pdm 综合使用体验感觉还不如 poetry ,吹的 pep 提出的那个特性被否了,没通过。
pl01665077
100 天前
@dcoder 做 web 项目不太习惯用 conda ,嘿嘿
pl01665077
100 天前
@jiayouzl 那也是,不过有时安装新的包总是忘记 pip freeze 等等。。。
pl01665077
100 天前
@dishonest rust 我也会,不过 cargo 的源要配置国内源会方便点,一开始配置还挺麻烦的。。。
uni
100 天前
uvuvuv
pl01665077
100 天前
@GeekGao 谢谢分享经历,哈哈,pip 还是稳
pl01665077
100 天前
@siteshen 对,pipenv 自动更新依赖很讨厌。
pl01665077
100 天前
@NoOneNoBody 对的,非常赞同!

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

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

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

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

© 2021 V2EX