你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。
如果我的分享对你有帮助,请关注我,一起向上进击。
作者:happylittle,出处:https://zhuanlan.zhihu.com/p/663735038
virtualenv
太老,除非你还在使用 python 2,否则不推荐。
venv
python 自带的虚拟环境管理,简单是它的优势,也是它的劣势。
只能创建虚拟环境,不能指定系统不存在的 python 环境版本,不能管理系统中的环境列表(例如选择一个已经创建好了的虚拟环境)。
venv 的虚拟环境默认是存放在项目文件夹里的,这会影响项目文件的管理。
pipenv :
requests 库作者 Kenneth Reitz 大神的作品。但 pipenv 并不稳定,例如,如果你运行 pip install ...两次,结果可能不一样,pipenv 曾承诺解决这个问题,但实际上,它只是多次尝试运行 pip install <单个包>,直到结果看起来差不多符合规范。
显然,这样的方式更慢,但最终问题依然存在。
anaconda / conda
如果是科学计算的新手,推荐使用,但:
anaconda 实在过于臃肿,它的安装包里包括了众多科学计算会用到的 packages,安装后动辄 5-6 个 G。
anaconda 有个不包含 packages 的版本,叫 miniconda,但 miniconda 仍然存在安装依赖库过于激进的问题,安装同样的 packages,conda 总会比别的包管理器安装更多的“依赖包”,即便有的“依赖包”并不是必须,这会导致你的项目出现不必要的膨胀。
同时,conda 的 packages 列表“conda list”还存在和“pip list”不一致的问题。
anaconda 由 python 编写,所以 anaconda 运行速度非常慢。使用 PyCharm 调用 conda 来创建环境时更是慢的离谱。
poetry
唯一的真神。poetry 没有上述缺点,同时轻便强大。
poetry 使用 pyproject.toml 和 poetry.lock 文件来管理依赖,类似于 JavaScript/Node.js 的 Npm 和 Rust 的 Cargo,这俩都是非常成熟好用的依赖管理方案。
poetry 本身并不具有管理 Python 解释器的功能,推荐和 pyenv/pyenv-win 使用,可以轻松下载和设置不同版本的 Python 解释器。
poetry 的缺点可能是较为复杂,上手困难。由于 poetry 严格的依赖管理策略,你可能会在安装依赖包时遇到更多的问题。
在国内,poetry 还有另一个缺点,无法设置全局镜像源,只可针对单个项目设置镜像源。
pip
你应该仅使用 pip 来安装 poetry,就像 IE 的唯一用途是下载 Chrome。
- EOF -
文章已经看到这了,别忘了在右下角点个“赞”和“在看”鼓励哦~
推荐阅读 点击标题可跳转
回复下方「关键词」,获取优质资源
回复关键词「 pybook03」,领取进击的Grey与小伙伴一起翻译的《Think Python 2e》电子版
回复关键词「书单02」,领取进击的Grey整理的 10 本 Python 入门书的电子版
👇关注我的公众号👇
告诉你更多细节干货
欢迎围观我的朋友圈
👆每天更新所想所悟