Python环境工具¶
我在 Homebrew环境Python 实践时注意到,官方文档 Homebrew Documentation: Python 提到:
Important: Python may be upgraded to a newer version at any time. Consider using a version manager such as pyenv if you require stability of minor or patch versions for virtual environments.
也就是说, Homebrew 并不会pin住Python版本,随时可能会进行版本升级。这对于生产环境来说,需要确保稳定的模块兼容性,是有特定版本要求的。正是因为这个需求,催生出类似 Ruby版本管理器 一样的Python版本管理工具 pyenv
。
现在我们来理清一些Python环境工具的关系:
venv
: 从Python 3.3开始的最新版本,提供了内奸的venv
模块,默认安装,提供了类似 Python virtualenv 的隔离Python环境pyvenv
: 从Python 3.3开始,提供了pyvenv
脚本 来帮助创建不腻环境,pyvenv
实际上是venv
模块的一个包装,提供了venv
相同功能(也就是说,你直接使用venv
模块就可以了)pyenv
是一个第三方工具,用于在统一个主机上安装管理多个Python版本以及创建虚拟环境。pyenv
和venv
或pyvenv
没有关系,但是提供了相似的功能virtualenv
是一个第三方工具,用于创建隔离的虚拟环境。不过Python默认不安装virtualenv
,你需要通过pip
手工安装virtualenvwrapper
是一系列shell脚本用来在virtualenv
上提供附加功能。virtualenvwrapper
可以管理多个虚拟环境并且提供一些附加功能,如对于部分项目使用特定的虚拟环境pipenv
是结合了virtualenv
和pip
的工具,允许微怒项目创建虚拟环境和管理Python包,这个工具设计成比直接使用virtualenv
和pip
更方便
备注
GitHub: pyenv/pyenv 是从 rbenv
和 ruby-build
fork出来的项目,并使用Python做了修改
总之,如果作为底层使用,你需要使用:
pyenv
来安装和管理多个Python版本以适应开发、测试、生产环境:为每个项目制定运行的Python版本
为每个用户指定全局的Python版本
只需要一个环境变量就可以覆盖默认Python版本(切换到指定Python版本)
一次性从Python的多个版本搜索命令,这对于
tox
这样的Python自动化标准测试非常有用( OpenStack使用tox完成单元测试 )
venv
来构建Python的隔离虚拟环境(结合pyenv
可以构建不同的版本环境)
备注
目前我对环境工具理解有限,期望在后续实践中不断加深理解