不同项目的虚拟环境和 python 版本

Virtual environment and python versions for different projects

让我先概述一下我想要的解决方案,然后再详细说明一个具体的问题如何达到这种状态。

我很快将在 python 开始两个编码项目。我以前用过 python 但从来没有用过这么大的项目。我理想的场景是设置一个可以 运行 虚拟环境和不同 python 版本的不同项目的设置。一些研究指出 virtualenv / virtualenvwrapper 和 pyenv. It seems using pyenv-virtualenv or pyenv-virtualenvwrapper 有一个很好的方法来指定特定项目的虚拟环境和 python 版本。

问题:为特定项目设置虚拟环境和 python 版本后,我在后期切换到较新的 python 版本有多容易?假设我已经开始使用 python 3.4 的项目 A,并且在未来一年内我想将所有内容都移动到 python 3.6。这可能是一种巧妙的方式吗?

当然可以:

$ rm -r my-python-3.4-env
$ virtualenv -p python3.6 my-python-3.6-env
$ source my-python-3.6-env/bin/activate

换句话说,每个虚拟环境只是一个文件夹,其中包含必要的文件。你 "activate" 使用 source .../activate 命令的环境(在 virtualenv 的情况下),你可以很容易地离开它。要切换到不同的环境,您只需创建一个具有特定 Python 可执行文件的新环境并激活它。

您要注意的是保持安装的可重复性,这意味着如果您依赖外部模块(现代项目通常这样做),您不想手动安装每个依赖项而是自动安装。例如,您创建一个 setuptools setup.py file 来列出您的依赖项,然后让它自动将它们安装到您的新环境中:

$ source my-python-3.6-env/bin/activate
(my-python-3.6-env) $ python setup.py develop