比较高级的 python 虚拟机环境和包管理器,有两个方案:pipenv 和 poetry
这两个货色,不仅仅可以帮我们做『虚拟环境管理』:
- 创建虚拟环境
- 删除虚拟环境
还可以帮我们做『包管理』
但是,我不建议,用他们做包管理!为什么?因为狗拿耗子。
pipenv、poetry 安装包的时候,非常喜欢狗拿耗子,帮我们额外做一堆的版本冲突检查:
- 慢,不知道这两货的检查逻辑是什么,非常的慢。pip 本身也是有 『版本冲突检查』。但是 pipenv、poetry 做的更多,导致随便安装个东西都会 waiting 小时(相比之下,直接会使用 pip 只要几秒)
- 自作聪明,如果你创建虚拟环境的『当前路径』下有 requirements.txt 的话,他们会自动帮你安装 requirements.txt 中的所有的包,因为上面的『慢』原因,这会导致你的体验不穷无尽的糟糕。
所以:不要用 pipenv 和 poetry 做包管理(同时,不要把 requirements.txt 叫做 requirements.txt ,而是应该叫做 requirements-prd.txt 和 requirements-dev.txt)
但是可以用 pipenv 和 poetry 做包管理,因为对应 unix 这类自带 python 的 os 来说,虚拟环境是刚需。
那 pipenv 和 poetry 两者之间如何选择?
我选择 pipenv
为什么?
pipenv 的 api 和 pip 高度相似。相比 poetry api 的不伦不类,学习成本低很多
之前看网上有很多批判 pipenv 的文章,在 2022 年看都是放屁。