Virtualenv 安装具有多个 Python 版本的模块

Virtualenv installing modules with multiple Python versions

我正在尝试通过创建一个 virtualenv 来保持依赖关系来启动一个 Python 3.6 项目。我目前在我的机器上同时安装了 Python 2.7 和 3.6,因为到目前为止我一直在使用 2.7 编写代码,我希望试用 3.6。我 运行 遇到一个问题,不同版本的 Python 没有检测到我在 virtualenv 中安装的模块。

例如,我使用以下命令创建一个 virtualenv:virtualenv venv

然后我激活 virtualenv 并使用以下命令安装 Django:pip install django

当我使用命令激活 Python 2.7 或 3.6 时出现问题 py -2py -3,交互式 shell 均未检测到已安装 Django。

Django 仅在我 运行 python 命令时被检测到,当我想使用 3.6 时默认为 2.7。有谁知道这个问题的可能修复方法,以便我可以让我的 virtualenv 正常工作?谢谢!如果这很重要,我在一台机器上 运行ning Windows 7.

创建 virtualenv 时必须 select 解释器。

virtualenv --python=PYTHON36_EXE my_venv

用 Python 3.6 安装路径代替 PYTHON36_EXE。然后在你激活后,python 可执行文件将绑定到 3.6,你可以像往常一样 pip install Django

根据python3.6创建虚拟环境

virtualenv -p python3.6 env36  

激活它:

source env36/bin/activate

那么venv36已经激活,venv36的pip已经可以使用了,你可以照常安装Django,安装包会存放在env36/lib/python3.6/site-packages下:

pip install django

关键是 pip 为 Python 的特定版本安装东西,并且安装到非常特定的位置。基本上,虚拟环境中的 pip 命令是专门为虚拟环境使用的解释器设置的。因此,即使您在激活该环境的情况下显式调用另一个解释器,它也不会选择为默认解释器安装的包 pip