Python的开发环境
在 Python 开发环境中我们能看到很多工具,如 pip
、conda
、poetry
、 virtualenv
、 venv
、 pyenv
等等。他们是什么,都有什么作用,该怎么选择,如何构建一个开发环境,在这篇文章我会尽力全面的阐明,既然全面那么很多细节就无法照顾,感兴趣可以在参考资料中进一步了解。本文将人群分为两类,一类是持保持最新策略的人,希望个人 PC 里所有软件工具都保持最新,想体验最新特性,最新优化等;另一类是持保持稳定策略的人,比如部署在生产环境,不会经常变更版本,防止出现未知依赖问题等。对于这两类人群提供不同的建议。
在 Python 开发环境中最常见任务是 Python 版本管理、虚拟环境、包管理、打包发布、安装。
各工具提供功能概览:
-
venv
:提供虚拟环境。 -
virtualenv
:提供虚拟环境。 -
pyenv
:Python 版本管理。 -
conda
:提供 Python 版本、虚拟环境、包管理、打包发布(conda)、安装。 -
poetry
:虚拟环境相关、包管理、打包发布(标准)、安装。 -
pip
:包管理、打包发布(标准)、安装。
若还有其他相关工具,欢迎在评论区推荐。
虚拟环境
虚拟环境包含一份独立的 Python 环境,含独立解释器与库集合(site-packages
)。conda
、poetry
、 virtualenv
、 venv
、 pyenv
都有虚拟环境相关的设置。
-
venv
是 Python 标准库支持的虚拟环境创建库。
- 缺点
-
venv
在 Python 3.5 后推荐使用。 - 只能创建与主环境 Python 版本一致的虚拟环境。
-
- 优点:无需额外下载。
- 使用:命令行使用简单,功能简单,无法满足复杂需求,但可通过其提供的 API 来编写完成复杂需求。面向第三方虚拟环境创建者。
-
virtualenv
是 Python 第三方库,可以创建独立的虚拟环境。
- 优点
- 支持 Python2 和 Python3。
- 可以为虚拟环境指定本地已有的 Python 版本。
- 缺点
- 不支持 Python 版本下载。
- 依赖 Python。
-
pyenv
是一个第三方工具,可以下载并管理多个 Python 版本。支持全局切换、单项目 Python 版本指定等特性。
- 缺点
- 不支持虚拟环境管理,需通过
virtualenv
或pyenv-virtualenv
来增强其功能。后者还提供管理conda
环境功能。 - 安装复杂。Windows 用户使用请使用
pyenv-win
。Linux/Mac 用户使用pyenv
。
- 不支持虚拟环境管理,需通过
- 优点:不依赖 Python。
-
conda
支持下载创建不同版本 Python 虚拟环境。
- 缺点
- 无法获取最新 Python 版本。
- 安装复杂。
- 无法与其他工具保持兼容性。往往需要其他工具来提供对
conda
的兼容性。
- 优点
- 使用方便
- 基本囊括开发环境所需的所有功能。推荐新手与持保持稳定决策的用户使用。
-
poetry
并不提供虚拟环境管理相关功能,只使用虚拟环境。可以使用将虚拟环境放置项目内的方式来创建虚拟环境。poetry
定位是在单项目全面管理,所以与其他工具不太一样。
虚拟环境管理工具推荐
- 对于持保持最新策略,推荐
pyenv
+poetry
。(如果只想要虚拟环境管理可以用pyenv
+pyenv-virtualenv
) - 对于持保持稳定策略,推荐
conda
。(同样推荐poetry
用于单项目管理,conda
用于全局管理)
pyenv
与conda
如果想同时使用,需要再安装pyenv-virtualenv
。
包管理器
pip、conda、poetry
待更新
打包发布
pip、conda、poetry
待更新
安装
pip、conda、poetry
待更新
总结
待更新
__EOF__