conda、anaconda、venv、virtualenv、virtualenvwrapper、pyenv、pyenv-win、pyenv-virtualenv、pyenv-virtualenvwr

首先我们要区分python的环境管理器和包管理器。
前者是对于python的版本和虚拟环境的控制(创建、管理等)。
后者是对于包的控制(安装、更新和管理所需的库和依赖)。
当然,也有结合两者的工具。

当下热门的python管理工具如下:

  • conda
    • 环境管理器+包管理器
    • 不止支持python,还支持R、Lua等环境和包的管理。
    • 使用conda创建新的python环境时,会默认下载对应的pip包含在里面。
  • anaconda
    • 包含了conda的环境管理器+包管理器。
    • 加强了数据科学和机器学习的场景处理,内置NumPy、Pandas、Jupyter Notebook等包。
    • 包含pip这个官方包管理器。
  • venv:
    • 环境管理器
    • 是python3.3及以上的解释器自带的,不需要通过pip额外安装。
    • 注意:仅适用于python3.x
  • virtualenv:
    • 环境管理器
    • 本身不包含pip,甚至virtualenv的下载都是通过pip install额外安装的。但是用virtualenv创建新的python环境时,会默认下载对应的pip包含在里面。
  • virtualenvwrapper:
    • 环境管理器
    • 相当于virtualenv的功能增强版,只不过需要先安装virtualenv才能安装virtualenvwrapper
    • 虚拟环境存储目录:相比于virtualenv创建的虚拟环境会储存在用户任意指定的目录下,virtualenvwrapper将所有环境几种在~./virtualenvs下,更方便查找管理。
    • 命令简化:相比于virtualenv,virtualenvwrapper的命令更加简化。
    • 虚拟环境克隆:virtualenvwrapper可以克隆现有的虚拟环境,而virtualenv不可以。
    • 集成全局站点包:virtualenvwrapper 允许你选择是否继承系统(或全局) Python 版本的包,从而决定你的虚拟环境是否与全局 Python 环境隔离。而virtualenv不可以。
    • 命令行补全:virtualenvwrapper 使用 workon 命令时,可以按下 Tab 键自动补全虚拟环境的名称,而virtualenv不可以。
  • pyenv:
    • 环境管理器
    • 注意:pyenv并不支持windows,但是推出了支持的pyenv-win!
    • 因为不包含 包管理 的功能,所以推出了配套插件pyenv-virtualenv来实现包管理功能。
    • 不包含pip,但是用pyenv创建新的python环境时,会默认下载对应的pip包含在里面。
  • pyenv-win:
    • 环境管理器
    • 一切同pyenv,只不过pyenv不支持win,pyenv-win支持win。且没有配套插件pyenv-virtualenv了,一般是配合virtualenv或venv来实现包管理器。
  • pyenv-virtualenv:
    • 包管理器(其实不止是包管理器,还拓展了一些pyenv对于python环境的管理功能,但主要是用来当包管理器)
    • 是pyenv的配套插件,一定要先下载pyenv才能下载pyenv-virtualenv。
    • 注意:不支持windows环境
  • pyenv-virtualenvwrapper:
    • 环境管理器
    • 结合了pyenv、pyenv-virtualenv 、virtualenv 和 virtualenvwrapper。相当于集大乘者。
    • 但是需要先安装 pyenv和pyenv-virtualenv 才能安装 pyenv-virtualenvwrapper。
    • 同样的,相比于pyenv-virtualenv,它多了虚拟环境克隆集成全局站点包命令行补全的功能,而且引入了 virtualenvwrapper 的命令。

综合以上,推荐的组合配套是:

windows环境下:pyenv-win+virtualenv+virtualenvwrapper的组合,或者anaconda本身(后端开发推荐前者,机器学习等推荐后者)

max环境下:pyenv+pyenv-virtualenv或者pyenv+pyenv-virtualenv+pyenv-virtualenvwrapper(一般开发用前者就够了,需要更细粒度的控制就用后者)

甚至都不需要下载官方的python解释器,用以上组合就可以实现不同版本的python版本控制和包管理。

你可能感兴趣的:(conda,virtualenv,python,anaconda,pyenv,pyenv-win,包管理)