项目开发中可能需要用到不同版本的Python及相关的开发环境。比如Python2及Python3,或者有的项目需要 Django1.5 ,有的需要2.0,这个时候借助一些工具,往往可以达到事半功倍的效果。
个人搭配
既然别人都说不够理想,那就暂时处于观望阶段吧。目前个人在用的 Python 虚拟环境和包管理组合:
虚拟环境管理:venv
包管理:pip
工作流
python3 -m venv venvX # 使用 venv 创建名为 venvX(可自定义) 的虚拟环境 |
值得关注的
第三方库
virtualenv
virtualenv是一个非常流行的工具,为Python库创建独立的Python环境。如果你不熟悉这个工具,我强烈建议你学习它,因为它是一个非常有用的工具,我将在这个答案的其余部分对此进行比较。
它通过在一个目录(例如:env/)中安装一堆文件,然后修改PATH环境变量来为自定义bin目录(例如:env/bin/)添加前缀。 python或python3二进制文件的精确拷贝会被放置在这个目录中,但Python被编程为首先在环境目录中查找相对于其路径的库。它不是Python标准库的一部分,但是获得PyPA(Python Packaging Authority)正式称赞。激活之后,你就可以使用pip在虚拟环境中安装软件包。
virtualenvwrapper
virtualenvwrapper是virtualenv的一组扩展(参见文档)。它提供例如mkvirtualenv、lssitepackages这样的命令,特别是workon命令,它可以在不同的virtualenv目录之间切换。如果你想要多个virtualenv目录,这个工具特别有用。
pyenv
pyenv是Python的版本管理器,用于隔离Python版本。例如,你可能想要针对Python 2.6,2.7,3.3,3.4和3.5测试你的代码,因此你需要在不同Python版本之间进行切换。一旦激活,它就会在PATH环境变量前加上~/.pyenv/shims,其中有一些与Python命令(python,pip)匹配的特殊文件。这些不是Python提供的命令的副本;它们是根据PYENV_VERSION环境变量或.python-version文件或~/.pyenv/version文件决定运行哪个版本的Python的特殊脚本。 pyenv也使下载和安装多个Python版本的过程变得更简单,使用命令pyenv install即可。
pyenv-virtualenv
pyenv-virtualenv是pyenv的一个插件,和pyenv一样,允许你在同一时间方便地使用pyenv和virtualenv。但是,如果你使用Python 3.3或更高版本,则pyenv-virtualenv会尝试运行python -m venv(如果可用),而不是virtualenv。如果你不想使用便利功能,则可以搭配使用virtualenv和pyenv而不使用pyenv-virtualenv。
pyenv-virtualenvwrapper
pyenv-virtualenvwrapper是pyenv的一个插件,可以很方便地将virtualenvwrapper集成到pyenv中。
pipenv
pipenv是Python的包管理器。由Kennetth Reitz(requests的作者)编写维护,是我们上面提到的这些项目里面最新的。它的目标是在命令行中将Pipfile、pip和virtualenv合并为一个命令。
标准库
pyvenv
pyvenv是一个Python 3附带的脚本,但在Python 3.6 中被弃用,(参见这里)因为它有问题(暂且不说名字还容易造成混淆)。在Python 3.6+中,实际上等价于命令python3 -m venv。
venv
venv是Python 3附带的一个包,你可以使用python3 -m venv运行(虽然由于某些原因,一些发行版把它分离成一个单独的发行包,比如Ubuntu / Debian上的python3-venv)。它的作用与virtualenv 相似,工作方式也非常相似,但不需要复制Python二进制文件(Windows下除外)。如果你的代码不需要支持Python 2,可以使用它。在撰写本文时,Python社区似乎对virtualenv感到满意,venv相对来说比较小众。






